Description:
Adopt a multi-branch repository model where each branch ships its own product on its own release cadence, instead of the monolithic main layout that mixes Terraform modules, operator source, and DC-API control-plane services.
Branch model
| Branch |
Holds |
Status |
main |
Legacy unified layout. Frozen for the restructure but not deleted — existing consumers continue to resolve main tags. |
Untouched, frozen |
terraform |
Terraform module catalog only. The only branch that ships HCL. |
Live on this repo at the populated catalog |
operators |
Operator source code — Go controllers, kubebuilder scaffolding, Dockerfiles, CRD definitions. |
Empty orphan on fork, content to follow |
controlplane |
DC-API control-plane services (cloud-ui, dc-api, dcctl, crds, docs). |
Empty orphan on fork, content to follow |
All three new branches are orphans — no shared ancestry with main or with each other.
terraform branch internals
Five purpose-driven module groups, each answering "when do I need this?":
platform/ — always required. Rancher, Harvester integration, identity, observability.
tenancy/ — when onboarding users. Projects, quotas, VMs, clusters, VLAN routing.
operators/ — Terraform-only deployment modules for managed-service operators (source on the operators branch).
cloud/ — optional DC-API self-service layer.
addons/ — niche glue for gaps in vanilla Rancher+Harvester.
Tag scheme
<branch>/vMAJOR.MINOR.PATCH — slash separator, strict SemVer. Path-like namespacing keeps tag lineages independent per branch and works in Terraform ?ref=. Initial release will be terraform/v0.1.0.
Promotion mechanic
Orphan branches share no history with main or with each other, so GitHub refuses to open a PR between two orphan branches (no history in common). Promotion from fork to upstream is by direct git push --force-with-lease upstream <branch>:refs/heads/<branch> after fork-side review.
Plan (tracked here — Epic closes when all boxes ticked)
Suggested Labels:
epic, restructure
Description:
Adopt a multi-branch repository model where each branch ships its own product on its own release cadence, instead of the monolithic
mainlayout that mixes Terraform modules, operator source, and DC-API control-plane services.Branch model
mainmaintags.terraformoperatorscontrolplaneAll three new branches are orphans — no shared ancestry with
mainor with each other.terraformbranch internalsFive purpose-driven module groups, each answering "when do I need this?":
platform/— always required. Rancher, Harvester integration, identity, observability.tenancy/— when onboarding users. Projects, quotas, VMs, clusters, VLAN routing.operators/— Terraform-only deployment modules for managed-service operators (source on theoperatorsbranch).cloud/— optional DC-API self-service layer.addons/— niche glue for gaps in vanilla Rancher+Harvester.Tag scheme
<branch>/vMAJOR.MINOR.PATCH— slash separator, strict SemVer. Path-like namespacing keeps tag lineages independent per branch and works in Terraform?ref=. Initial release will beterraform/v0.1.0.Promotion mechanic
Orphan branches share no history with
mainor with each other, so GitHub refuses to open a PR between two orphan branches (no history in common). Promotion from fork to upstream is by directgit push --force-with-lease upstream <branch>:refs/heads/<branch>after fork-side review.Plan (tracked here — Epic closes when all boxes ticked)
terraformbranch with the restructured module catalog.terraform.lock.hclartifacts on the forkterraformtowso2:terraformterraform/v0.1.0tag against the current upstreamterraformHEADfeature/keyvault-operator-moduleonce it merges tomain→ cutterraform/v0.2.0operatorsbranch with operator source on the forkoperatorstowso2:operatorsoperators/v0.1.0tagcontrolplanebranch with DC-API control-plane services on the fork (sanitize secrets/env files first)controlplanetowso2:controlplanecontrolplane/v0.1.0tagSuggested Labels:
epic, restructure