From 7bf4f7a695f2ca0633aa8f28d623431624a4ada6 Mon Sep 17 00:00:00 2001 From: Derek Date: Sun, 15 Nov 2026 10:49:57 +1100 Subject: [PATCH 1/2] fix(scalo): rebuild on 2.14.30 scalo 2.14.30's chart removes at most 25 percent of the replicas each minute after the 300 s KEDA scale-down window. The Kubernetes default could remove every surplus replica in one 15 s step. scalo reports worker saturation as leased over max. Update the scalo pin, the lock and the helm library pin to 2.14.30. --- .hyperi-ci.yaml | 2 +- Cargo.lock | 4 ++-- Cargo.toml | 2 +- crates/pgo-driver/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.hyperi-ci.yaml b/.hyperi-ci.yaml index b9e2e854c..281a35a4b 100644 --- a/.hyperi-ci.yaml +++ b/.hyperi-ci.yaml @@ -83,7 +83,7 @@ release: helm: enabled: true contract: emit - library: "2.14.29" + library: "2.14.30" container: enabled: true dockerfile: Dockerfile diff --git a/Cargo.lock b/Cargo.lock index 0b528865f..47bcd0ee2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3175,9 +3175,9 @@ dependencies = [ [[package]] name = "scalo" -version = "2.14.29" +version = "2.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feceebb26b38815f5f1b78b03f235630d011240810c75af6e230dd7518245a1f" +checksum = "aee9c374451af23a6ebf90c02ce4ae33ea37fda7f397622825a3e0618988c566" dependencies = [ "axum", "backon", diff --git a/Cargo.toml b/Cargo.toml index b4cee58f7..b0d220fc8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -166,7 +166,7 @@ dfe-transforms = { path = "crates/dfe-transforms" } # Features are added when their API is actually referenced, not speculatively. # The floor moves with `release.helm.library` in .hyperi-ci.yaml: the library # renders only the contract version its scalo release writes. -scalo = { version = ">=2.14.29, <3", features = [ +scalo = { version = ">=2.14.30, <3", features = [ "cli-service", "config", "config-schema", diff --git a/crates/pgo-driver/Cargo.toml b/crates/pgo-driver/Cargo.toml index f41093f5b..de2480278 100644 --- a/crates/pgo-driver/Cargo.toml +++ b/crates/pgo-driver/Cargo.toml @@ -34,7 +34,7 @@ required-features = ["driver"] # Declared here rather than inherited: the workspace entry carries the # service's full feature list, and this crate must build with the Kafka # transport alone so the workload's driver build takes minutes. -scalo = { version = "2.14.29", default-features = false, features = [ +scalo = { version = "2.14.30", default-features = false, features = [ "transport-kafka", ] } serde_json = { workspace = true } From 3064959e487f2cb7c42ea2b509526443f87416c0 Mon Sep 17 00:00:00 2001 From: Derek Date: Sun, 15 Nov 2026 11:15:50 +1100 Subject: [PATCH 2/2] fix(scalo): regenerate the config artefacts on 2.14.30 scalo 2.14.30 rewords some of its config doc comments, which the generated config schema carries as descriptions. Regenerate the committed artefacts so the drift test matches. --- docs/config-schema.json | 4 ++-- docs/config-schema.yaml | 4 ++-- docs/deployment-contract.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/config-schema.json b/docs/config-schema.json index 9b11550c5..2ddd824ab 100644 --- a/docs/config-schema.json +++ b/docs/config-schema.json @@ -390,7 +390,7 @@ "const": "sapics" }, { - "description": "Caller supplies the MMDB paths directly; nothing is downloaded.", + "description": "Caller supplies the MMDB paths directly. Nothing is downloaded.", "type": "string", "const": "custom" } @@ -518,7 +518,7 @@ "description": "How backends are used when multiple are enabled.", "oneOf": [ { - "description": "Try backends in order; stop on first success.\nDefault order: Kafka first, file fallback.", + "description": "Try backends in order. Stop on first success.\nDefault order: Kafka first, file fallback.", "type": "string", "const": "cascade" }, diff --git a/docs/config-schema.yaml b/docs/config-schema.yaml index 1072407a2..c02a22cc5 100644 --- a/docs/config-schema.yaml +++ b/docs/config-schema.yaml @@ -411,7 +411,7 @@ $defs: anonymous, ASN only, CC BY 4.0. type: string const: sapics - - description: Caller supplies the MMDB paths directly; nothing is downloaded. + - description: Caller supplies the MMDB paths directly. Nothing is downloaded. type: string const: custom AutoDownloadConfig: @@ -540,7 +540,7 @@ $defs: description: How backends are used when multiple are enabled. oneOf: - description: |- - Try backends in order; stop on first success. + Try backends in order. Stop on first success. Default order: Kafka first, file fallback. type: string const: cascade diff --git a/docs/deployment-contract.json b/docs/deployment-contract.json index 892751c18..0f5b7e690 100644 --- a/docs/deployment-contract.json +++ b/docs/deployment-contract.json @@ -541,7 +541,7 @@ "const": "sapics" }, { - "description": "Caller supplies the MMDB paths directly; nothing is downloaded.", + "description": "Caller supplies the MMDB paths directly. Nothing is downloaded.", "type": "string", "const": "custom" } @@ -669,7 +669,7 @@ "description": "How backends are used when multiple are enabled.", "oneOf": [ { - "description": "Try backends in order; stop on first success.\nDefault order: Kafka first, file fallback.", + "description": "Try backends in order. Stop on first success.\nDefault order: Kafka first, file fallback.", "type": "string", "const": "cascade" },