Gap B (bp-seaweedfs):
- New templates/storageclass.yaml renders Catalyst-curated `seaweedfs-storage`
StorageClass via `seaweedfsOverlay.storageClasses[]`. Default provisioner
`rancher.io/local-path` (k3s ships it day-1) so PVCs requesting
`seaweedfs-storage` (bp-guacamole recordings, future bp-loki/mimir/tempo
caches) bind without waiting for bp-hcloud-csi or the SeaweedFS CSI driver.
Per-Sovereign overlay flips `provisioner:` to `csi.hetzner.cloud` or
`seaweedfs-csi-driver.csi.k8s.io` once those are installed.
- Chart 1.1.1 -> 1.2.0.
Gap D (bp-cluster-autoscaler-hcloud):
- templates/hetzner-node-config-secret.yaml now synthesises a valid
HCLOUD_CLUSTER_CONFIG JSON (base64 per upstream contract) from
`cluster-autoscaler.autoscalingGroups[]` when the per-Sovereign overlay
hasn't supplied one. Eliminates the
`F.. Failed to create Hetzner manager: HCLOUD_CLUSTER_CONFIG or
HCLOUD_CLOUD_INIT is not specified` FATAL observed live on omantel.biz
prov #7 (2026-05-10).
- New `clusterAutoscalerHcloud.derivedClusterConfig.{imagesForArch,nodeConfigs}`
values block — operator-tunable per docs/INVIOLABLE-PRINCIPLES.md #4.
- When `clusterConfig:` IS supplied via overlay, chart honours it verbatim
(annotation `catalyst.openova.io/cluster-config-source: overlay` vs
`chart-derived` flags the path).
- Chart 1.1.0 -> 1.2.0.
Bootstrap-kit pins (clusters/_template + clusters/{omantel,otech}.omani.works):
- bp-seaweedfs 1.1.1 -> 1.2.0
- bp-cluster-autoscaler-hcloud 1.0.0 -> 1.2.0
Verification:
- `helm template platform/seaweedfs/chart` emits the StorageClass.
- `helm template platform/cluster-autoscaler-hcloud/chart` emits a
base64-decoded JSON {imagesForArch, nodeConfigs.workers.{cloudInit,
labels, taints}} matching upstream Hetzner provider format.
- Override path verified: `--set clusterAutoscalerHcloud.clusterConfig=...`
emits the verbatim blob and flags source=overlay.
Refs: bounded-cycle-audit-prov7.md Gaps B + D.
Co-authored-by: hatiyildiz <269457768+hatiyildiz@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>