Repository navigation
Release 0.14.0
XMC Release 0.14.0
Release Version Determination: Minor bump (
0.13.0->0.14.0).
Rationale: Adds out-of-the-box support for NVIDIA H100 Mega 80GB (a3-megagpu-8g) GPU accelerators on GKE and an XMC Lite batch job example for existing GKE clusters, resolves JobSet finalizer patching and reconciler error reporting bugs, brings dynamic ClickHouseComponentCR resolution and hot-reloading DataEngine to the production-ready Metrics & Dashboard Service pipeline, and advances behind-the-flag capabilities across Components (stable-2026ameta-chart, drift self-healing), Pause Scheduling, and GKE-hosted Log Monitor deployments. (Note: No.sqlor.ddldatabase schema migrations were introduced in this release;migrations/changes were internal Go compatibility refactors).
🌟 1. Public Changes (Available Out-of-the-Box)
✨ New Features & Improvements
- NVIDIA H100 Mega 80GB (
a3-megagpu-8g) GPU Accelerator Support: Researchers and cluster users can now schedule workloads targeting GKEa3-megagpu-8gnode pools usingH100_MEGA(nvidia-h100-mega-80gb). The Actuator automatically injectscloud.google.com/gke-accelerator: nvidia-h100-mega-80gbinto the JobSet PodSpecnodeSelector, and Kueue and Resource Overview Dashboard (ROD) resource classifiers recognize and track the accelerator (#1115). - XMC Lite Batch Job Example on Existing GKE Clusters: Added
examples/xmc_lite_job/, providing a ready-to-run workflow for launching batch experiments directly onto an existing GKE cluster viaxm_local.create_experimentandxm_local.Kubernetes—complete with local SQLite experiment state inspection (inspect_sqlite_state.py)—without deploying the full XMC control plane (#1047).
🐛 User-Facing Bug Fixes & Stability
- Atomic JobSet Finalizer Removal & Reconciler Error Visibility: Replaced full-list finalizer merge patches in the JobSet reconciler with an atomic RFC 6902 JSON Patch (
test+remove) so concurrent finalizer updates on terminating workloads are never overwritten, enabled immediate reconciliation when malformed XMC labels are corrected on update, and surfaced non-retryable label/conversion failures asreconcile.TerminalErrorin controller-runtime metrics (#1025). - Corrected Kueue
LocalQueueTargeting insimple_jobExample: Updatedexamples/simple_jobdocumentation and CLI usage to pass KueueLocalQueuenames (cpu-queue,gpu-queue) instead ofClusterQueuenames—preventing example workloads from stalling asInadmissible—and documented required client environment variables (XMANAGER_ENDPOINT,IAP_CLIENT_ID,XMC_CLIENT_SA) (#1020).
🚀 2. Production-Ready Features Behind Feature Flags (Safe to Enable)
The following capabilities are fully developed, verified, and safe to be enabled. Their default enablement is temporarily postponed solely to align with managed solution milestones or external BYOD prerequisites.
🔹 [Flag: enable_metrics & dashboard_service_deployment_enabled] Metrics Pipeline & Dashboard Service
- How to enable:
- Metrics Ingestion: Set
enable_metrics: trueindeploy/ctk_v2/xmc-deployment-template.yaml(ormetrics.enabled: trueindeploy/helm/values.yaml). - Dashboard Service: Set
dashboard_service_deployment_enabled: trueindeploy/ctk_v2/xmc-deployment-template.yaml(ordashboardServiceDeployment.enabled: trueindeploy/helm/values.yaml). (Note: Dashboard Service requires BYOD storage devices—see the deployment README—and also requiresenable_metrics/metrics.enabledto be enabled for workload metrics data to be generated).
- Metrics Ingestion: Set
- What's New:
- Dynamic ClickHouse Connection Resolution & Hot-Reloading DataEngine: When running with components,
dashboard-servicedynamically resolves ClickHouse connection coordinates and credentials from theclickhouseComponentCR (falling back to staticCLICKHOUSE_*environment variables when absent), and automatically rebuilds and atomically swaps the cached ClickHouseDataEnginewithout requiring pod restarts whenever configuration or credentials change (#1037, #1038, #1039). - Expanded Nightly E2E Verification for Metrics & ClickHouse Workloads: Added dedicated automated E2E test verification for
clickhouse_metrics_job,metrics_job,metrics_dashboard_job, andxdash_dashboard, continuously verifying that workloads successfully stream metrics through the Ingestion Gateway into ClickHouse and that charts hydrate correctly (#1057, #1064, #1099). - Hermetic KinD E2E 3P ClickHouse & Redpanda Integration Suite: Added a dedicated KinD E2E test suite running real OSS ClickHouse and Redpanda containers to validate metrics pipeline integration locally and in CI (#1105).
- Dynamic ClickHouse Connection Resolution & Hot-Reloading DataEngine: When running with components,
🧪 3. In-Development / Experimental Features Behind Flags
Warning
The following capabilities are under active ongoing development, experimental, and may not yet be functional. They are available for early preview and evaluation by enabling their deployment flags in deploy/ctk_v2/xmc-deployment-template.yaml (or deploy/ctk_v2/xmanager-cloud-deployment.yaml) and Helm values.yaml.
🔹 [Flag: enable_components] Components
- How to enable: Set
enable_components: trueindeploy/ctk_v2/xmc-deployment-template.yaml(orcomponentsDeployment.enabled: trueindeploy/helm/values.yaml). - What's New:
- Single-Release
stable-2026aProfile Meta-Chart: Packageddeploy/profiles/stable-2026aas a unified Helm meta-chart (xmc-profile-stable-2026a) that renders and validates every catalogComponentCustom Resource (clickhouse,redpanda,ingestion-gateway) from a singlevalues.yamlfile with strict JSON Schema validation, extracted reusable profile chart contract tests, and updatedcomponent-linterto deduplicate nested chartComponentdefinitions (#1016, #1034, #1059). - Self-Healing Drifted 1P Component Releases & Serialized Teardowns:
xmc-bridgenow verifies that all Kubernetes objects in a deployed 1P component's Helm manifest exist on cluster, reports missing resources asHelmReleaseDrifted, automatically repairs drifted or failed releases with rate-limited exponential backoff (MaxHistory=10), and serializes async Helm upgrades with uninstalls/deactivations so removed releases are never resurrected (#1030, #1061, #1072). - Dynamic ClickHouse
ComponentCR Integration: Integratedpkg/components/crreaderwithdashboard-serviceso ClickHouse connection coordinates and credentials dynamically resolve from theclickhouseComponentCR with hot-reloadedDataEngineupdates (see Section 2 for details) (#1037, #1038, #1039). - Server-Side Apply (SSA) Status Applier, 3P Contract Breach Handling & Envtest Suite: Extracted
ApplyComponentStatusSSA(fieldManager: "xmc-bridge") and conflict-retried finalizer synchronization, separatedContractBrokenfromInvalidWrapperSpecfor 3P component status probes, modularizedK8sHelmManagerinto focused sub-packages, and added a hermeticcontroller-runtimeenvtestintegration suite covering CEL schema rules andValidatingAdmissionPolicydeletion protection (#1067, #1068, #1069, #1070, #1071, #1077, #1104, #1118). - Dev Environment Deployment, CTK Verification &
xmc-diagComponent Diagnostics: Added--enable-componentssupport totools/dev_env(automatically installing thestable-2026aprofile and verifyingComponentCRD,xmc-bridge, andComponentCR readiness inverify_xmc.py) and extendedtools/xmc-diagwith--check-componentsto report KubernetesComponentCR health in text and JSON diagnostic reports (#1081, #1087).
- Single-Release
🔹 [Flag: pause_scheduling_enabled] Pause Scheduling
- How to enable: Set
pause_scheduling_enabled: trueindeploy/ctk_v2/xmc-deployment-template.yaml(orfeatureFlags.pause_scheduling_enabled: trueindeploy/helm/values.yaml). - What's New:
- Immediate
STOPPEDTransition for Paused Work Units: Stopping a work unit in theSCHEDULING_PAUSEDstate viaStopWorkUnitorBatchStopWorkUnitsnow transitions its execution state directly toSTOPPEDin the Experiment State Server instead of waiting for a KubernetesJobSetdeletion watch event that never fires for unscheduled paused workloads (#1080). - Fast-Path Actuator Cache Advancement on Task Resumption: Replayed tasks now carry
resumption_run_idandresumption_timemetadata so an Actuator whose local pause cache has not yet refreshed immediately transitions to unpaused and dispatches replayed workloads to GKE instead of re-buffering them (#1089). - Graceful Pause State Error Handling in Health Service & Admin UI:
GetHealthStatusnow propagatesscheduling_pause_errorinstead of silently failing open as unpaused when Spanner pause state cannot be read, while the Admin Panel renders an error banner and disables the pause scheduling toggle button to prevent conflicting mutations (#1093). - Pause & Resumption Prometheus Telemetry & Storage Decoupling: Instrumented 6 Prometheus metrics covering pause state, buffered task counts, and resumption replay across Health Service, Actuator, and ESS (
/metrics), and decoupled pause scheduling domain types from the Spanner storage package (#1101, #1103).
- Immediate
🔹 [Flag: log_monitor_deployment_enabled] Log Monitor
- How to enable: Set
log_monitor_deployment_enabled: trueindeploy/ctk_v2/xmc-deployment-template.yaml(orlogMonitorDeployment.enabled: trueindeploy/helm/values.yaml). - What's New:
- In-Cluster GKE Deployment Option for Log Monitor: Added support for running the Log Monitor Pub/Sub streaming-pull subscriber as a Workload Identity-bound GKE Deployment (
log_monitor_deployment_enabled: true) instead of a pinned Cloud Run service (falseby default for staged migration), separated/healthzliveness from/readyzSpanner/PubSub readiness probes so transient Spanner outages do not restart-loop pods, and updated Health Service andverify_xmc.pyto probe the configured deployment mode (#1027, #1082).
- In-Cluster GKE Deployment Option for Log Monitor: Added support for running the Log Monitor Pub/Sub streaming-pull subscriber as a Workload Identity-bound GKE Deployment (
⚙️ 4. Operational, Infrastructure & Engineering Velocity
Changes relevant to cluster operators, CI/CD, and internal architecture that do not alter the end-user interface.
- GKE Deployment & Upgrade Hardening (
tools/dev_env&verify_xmc.py): Added an automaticmigratestep togke-deploy(with--skip-migrationsopt-out) so in-place GKE deployments apply pending Spanner migrations and roll pods before verification, updatedverify_xmc.pyandstep_verifyto wait forkubectl rollout statusand fail closed on unhealthy pods or broken connectivity (with--skip-verification), purged stale.ghpc/staged/charts beforegcluster create, added deterministic SHA-256 Helm chart fingerprinting (helm_chart_content_hash) to trigger umbrella Helm upgrades on template-only changes, and added off-PATHCLI diagnosis (~/.terraform/bin,~/go/bin,~/.local/bin) (#1020, #1031, #1032, #1079, #1082). - Google3 Compatibility Shim Elimination & Pure OSS Build: Removed internal
google3compatibility shims across Go and TypeScript (internal/compat/*,compat.bzlLoad()/LoadConfig()flag injection,google3runtime flags in Helm/Terraform,//go:embedpath rewrites, and UI Closure/Jasmine stubs), replacedsafesqland Tink shims with OSS packages, builtgrpc-gatewaydirectly from OSSgo_deps, and enforced a pre-commit/CI legacy import ratchet (check_legacy_imports.py) (#1074, #1075, #1078, #1095, #1123, #1124, #1125, #1126). - Protobuf Breaking Change Detection (
rules_buf): Added//api:protos_breaking_testusingrules_buf(buf v1.73.0) to enforceFILE-level wire and source compatibility across all 11 first-partyproto_librarytargets against a committed baseline (api/testdata/protos_baseline.binpb), and protectedapi/buf.yaml,api/BUILD.bazel, and the baseline image in the incremental PR approval policy (#1154). - Nightly Examples E2E Expansion & Verification Gate: Expanded daily Nightly Examples E2E coverage across all 13 SDK examples (
simple_job,clickhouse_metrics_job,workunit_artifact_job,chart_artifact_job,init_container_job,metrics_dashboard_job,metrics_job,multipod_job,sidecar,managed_xprof_artifact_job,per_job_node_selector,pathways_job, andxdash_dashboard), modularizedtools/nightly_tests/common.pyintotools/nightly_tests/verification/, and enforced a pre-commit/CI gate (check_examples_coverage.py) requiring every example underexamples/to wire a nightly E2E verifier (#1057, #1064, #1098, #1099, #1132, #1147). - KinD E2E Harness Resilience, 3P Integration Suite & CI Automation: Hardened the KinD E2E runner with bounded Spanner retry budgets and redacted project-number stderr logging, phase-classified failure reporting with single-retry on transient infrastructure errors, signal/deadline-aware teardown, GitHub Actions job summary outcome tables, and a new 3P ClickHouse + Redpanda KinD E2E integration suite; also enforced
mypystatic type checking in pre-commit/CI, ran GitHub Actions script tests inlint.yml, and added a Dependabot auto-merge workflow (#1094, #1105, #1134, #1136, #1141, #1142, #1143, #1144, #1145). - Reconciler, ESS & Health Service Internal Modularization: Decomposed the JobSet reconciler and
hypercomputeclientinto focused modules (predicates.go,startup_diagnostics.go,managed_xprof.go,mlrun_sync.go,mlrun_metrics.go, transport/operations/mlrun), simplifiedrestartWorkUnitExecutionswhile preserving error chains in ESS, lazily initialized Spanner clients and providers in Health Service, and updated engineering rules and skills (#1006, #1051, #1060, #1084, #1109, #1110, #1111, #1112, #1113, #1133). - Dependency & Security Maintenance: Remediated Dependabot security alerts in
cmd/uiforcompression(CVE-2026-87776),webpack-dev-middleware(CVE-2026-76844), andpiscina(CVE-2026-102992), and bumped@modelcontextprotocol/sdk,shell-quote, andnpm_and_yarndependencies (#1091, #1097, #1102, #1120, #1148).