Repository navigation
XMC Release 0.18.0
Release Version Determination: Minor bump (
0.17.0->0.18.0).
Rationale: Marks XMC's launch as a public open-source repository (pre-1.0 milestone), opens the0.18.xone-time transition window for migrating legacy umbrella-managedingestion-gatewaymetrics workloads to thestable-2026aComponent profile (enable_components: true), promotes Components (enable_components/componentsDeployment.enabled) to Section 2 with an end-to-endComponentStabilitycontract acrossstable-2026a(redpanda,clickhouse, andingestion-gatewayasSTABLE), introduces experimental Vizier (3P) and HPO (xmc-study-controller, 1P) components (EXPERIMENTALwithacknowledgeExperimental), adds ESS database schema migration017(Xidqueue ordering tie-breaker), and delivers Resource Observability Dashboard (/resources) enhancements alongside BYO PostgreSQL support in Cluster Toolkit.
Important
Running ingestion-gateway without Components (enable_components: false)? 0.18.x is the only release for migrating to Components. Complete the cutover in docs/migrations/components.md before upgrading to 0.19.0. See the first [Action Required] item below.
🌍 Public Open-Source Repository Launch (Pre-1.0 Milestone)
XMC is now available as a public open-source repository! While XMC remains pre-1.0 as we continue stabilizing core APIs, database backends, and component profiles toward a future 1.0 release, 0.18.0 marks our transition to open-source development with public onboarding documentation, contribution workflows, and security reporting guidelines in place.
🌟 1. Public Changes (Available Out-of-the-Box)
🚀 Major Highlights & Promoted Capabilities
- [Action Required] One-Time Components Transition Window (
0.18.xOnly) & Post-Migrationxmc-profileUpgrades:- Supported Migration Window (
0.18.xOnly):0.18.xis the only supported window for migrating an existing installation from legacy umbrella-managed metrics workloads (enable_components: false, umbrellaingestion-gateway) to thestable-2026aComponent profile (enable_components: true). Starting with0.19.0, the legacy non-component metrics templates and the one-time migration tool (tools/migrations/components/migrate.py) are scheduled for removal. Operators runningingestion-gatewayfrom the umbrella chart must complete the cutover on0.18.xbefore upgrading to0.19.0(clusters without a live umbrellaingestion-gatewaydo not need to run the handoff, ashandoffis a no-op for them). - Cutover Runbook: Follow
docs/migrations/components.md(prepare->handoff-> upgrade with components -> installxmc-profile->finalize) (#1461, #1606). The cutover keeps the liveingestion-gatewayserving throughout: Helm ownership is handed over without deleting pods, andxmc-bridgethen adopts the release with a rolling update. - Upgrading XMC After Migration: Because
xmc-profileis a separate Helm release thatgcluster deployand umbrellahelm upgradedo not upgrade, on every subsequent XMC upgrade operators must bump the pinned gateway image tag inprofile-values.yaml(components.ingestion-gateway.imageTag, andcomponents.ingestion-gateway.parameters.imageif set) and re-run thexmc-profileupgrade (docs/migrations/components.mdsection "After Migration: Upgrading XMC", #1606). - New Installations: Fresh installations do not need the migration tool—start directly by explicitly setting
enable_components: true(componentsDeployment.enabled: true; the default is stillfalse) and install thestable-2026aprofile (deploy/profiles/stable-2026a/README.md).
- Supported Migration Window (
- [Action Required] Cluster Toolkit Upgrades Must Re-Compile the Blueprint:
INSTALL.mdupgrade Step 4 (Option A) now runs./cluster-toolkit/gcluster create deploy/ctk_v2/xmanager-cloud.yaml -d <deployment_config_path> -o ctk-out -l WARNING -w --forcebefore./cluster-toolkit/gcluster deploy ctk-out/<deployment_name> --only xmc_app --auto-approve. Runninggcluster deployalone re-applies a stalectk-out/<deployment_name>without your updatedimage_tag,enable_componentssetting, or chart templates. This applies to every Cluster Toolkit upgrade, including the Components cutover (#1606). - [Action Required] ESS Database Schema Migration
017(017_work_units_queue_index_xid_tiebreaker): Added migration017_work_units_queue_index_xid_tiebreakerfor both Spanner and PostgreSQL to appendXidas a deterministic tie-breaker to the active work unit queue ordering index (#1491). Ensure schema migrations are applied before upgrading workloads: they are not run automatically bygcluster deploy. FollowINSTALL.md→ Step 3: Run Database Schema Migrations (or pass--run-migrationstodev_env.py gke-upgradein development environments).
✨ New Features & Improvements
- Resource Observability Dashboard (
/resources) Enhancements:- Experiment Title & Live Running Duration in Queue Jobs Table: Added the parent experiment title (#1522) and live running duration for active jobs (#1588) to the Queue Jobs side panel table.
- Draggable Pane Resize Divider & Persisted Full-Row Expandable Jobs Toggle: Added a draggable resize divider between the queues list and side panel (#1562) and a full-row expandable jobs layout toggle backed by
localStoragepersistence (#1570). - Generic Accelerator Parent Categories in Resource Type Picker: Updated the resource type filter picker to offer generic accelerator parent categories (e.g. grouping accelerator variants) (#1526).
- Configurable Web UI Documentation Link (
XMC_DOCS_URL): Made the documentation link in the Web UI navigation header configurable via theXMC_DOCS_URLenvironment variable and Helm chart values (#1584).
🐛 User-Facing Bug Fixes & Stability
- Executing-Cluster Resolution for Work Unit Logging & Dashboard Links: Updated the Reconciler and Web UI URL processor so work unit Cloud Logging and GKE dashboard links point to the actual executing cluster (properly supporting MultiKueue delegated workloads on remote clusters) (#1551).
- Deterministic Active Work Unit Queue Ordering: Added
Xidas a secondary sort tie-breaker when fetching active work units by queue across Spanner and PostgreSQL (#1491). - Opaque Search Syntax Help Popover: Fixed the experiment list search syntax help popover background so it renders opaquely over table content (#1513).
- Repo-Checkout SDK Verification in
install_xmanager.py: Updateddeploy/cli/install_xmanager.pyto assert that local Python SDKs (xmcandxdash) resolve from the repository checkout after installation (#1485).
🚀 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_components] Components
- How to enable: Set
enable_components: trueindeploy/ctk_v2/xmc-deployment-template.yaml(orcomponentsDeployment.enabled: trueindeploy/helm/values.yaml), then install thestable-2026aComponent profile (deploy/profiles/stable-2026a/README.md) or migrate an existing installation usingdocs/migrations/components.md. stable-2026aProfile Catalog & Declared Stability:redpanda:STABLEclickhouse:STABLEingestion-gateway:STABLEvizier:EXPERIMENTAL(requiresacknowledgeExperimental: true— see Section 3)hpo:EXPERIMENTAL(requiresacknowledgeExperimental: true— see Section 3)
- What's New:
ComponentStabilityContract & CRD Admission Enforcement: Added theComponentStabilitycontract (STABLE,EXPERIMENTAL) tocomponents.protoand theComponentCRD admission rules, declaring explicit stability tiers across thestable-2026acatalog (#1538). Note:spec.stabilityis now a requiredComponentfield. If you author or commitComponentmanifests yourself (e.g. GitOps), re-render them from the0.18.0stable-2026aprofile so they are not rejected on apply (#1564).- Stability Gating & Dependency Inversion Rules in CMS,
xmc-bridge, Profile Chart & Linter: EnforcedacknowledgeExperimentalgating and dependency stability inversion rules (preventingSTABLEcomponents from depending onEXPERIMENTALcomponents) at runtime in CMS andxmc-bridge(#1539) as well as statically in thestable-2026aprofile chart andcmd/component-linter(#1540). - End-to-End Component Stability Visibility (ESS, Health Service, Admin Panel UI &
xmc-diag): Surfaced component stability tiers across ESS drift detection, Health Service responses, the Admin Panel UI (/admin), andtools/xmc-diagoutput (#1541). - One-Time Legacy Metrics Migration Tool (
migrate.py) & Runbook: Addedtools/migrations/components/migrate.py(prepare,handoff,finalize) and the step-by-step operator runbook indocs/migrations/components.md(linked fromINSTALL.mdupgrade Step 6) for migrating umbrella-managed metrics workloads tostable-2026awhile keeping the live gateway serving (#1461, #1606).
🧪 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.yaml) and Helm values.yaml.
🔹 [Flag: enable_components + acknowledgeExperimental: true] Experimental Vizier (3P) & HPO (xmc-study-controller, 1P) Components
- How to enable: With
enable_components: true(componentsDeployment.enabled: true), enablecomponents.vizierand/orcomponents.hpoin yourstable-2026aprofile values and setacknowledgeExperimental: trueon each enabled experimental component. - What's New:
vizier(3P) &hpo(1P) Component Registration instable-2026a: Registered thevizier(3P OSS Vizier service) andhpo(1P hyperparameter optimization controller) components in thestable-2026aprofile catalog withEXPERIMENTALstability (#1566).xmc-study-controllerDaemon Binary, Image &hpoComponent Workload: Added thecmd/study_controller(xmc-study-controller) daemon binary and container image with health probes and configuration loading (#1575), and wired thehpocomponent chart andxmc-bridgeRBAC/Helm builder to deployxmc-study-controlleras thehpoworkload (#1580).- Dev/Test-Only Vizier Server Fixture for KinD 3P E2E Verification: Added a hermetic dev/test-only Vizier server fixture (
test/e2e/testdata/vizier) and KinD E2E harness test for thevizier3P component (#1583).
🔹 [Flag: database.experimentalPostgres] Experimental PostgreSQL Control-Plane Backend
- How to enable: Set
database.backend: postgresanddatabase.experimentalPostgres: trueindeploy/helm/values.yaml(or configure BYO PostgreSQL in Cluster Toolkit viadeploy/ctk_v2/xmc-deployment-template.yaml). - What's New:
- BYO PostgreSQL Support in Cluster Toolkit &
dev_env.py: Added Bring-Your-Own (BYO) PostgreSQL support to the Cluster Toolkit (deploy/ctk_v2) blueprint modules andupgrade_dev_env.py(#1498). - Component Manager Service (
cms) & PostgreSQLdbstoreParity: Implemented PostgreSQL component writes, ran the fulldbstoreconcurrency and fencing suite against PostgreSQL (#1418), and wired ESS to serve the Component Manager Service fromdbstoreon PostgreSQL (#1505). - ESS PostgreSQL Retention Sweeper & Deadline-Aware Serializable Retries: Added an ESS background retention sweeper to delete expired rows on PostgreSQL (matching Spanner TTL behavior) (#1496), retried PostgreSQL serializable transactions until the context deadline (#1507), and removed deprecated per-service database config blocks in favor of the unified
db-config(#1506).
- BYO PostgreSQL Support in Cluster Toolkit &
🔹 [Flag: enable_managed_mldiagnostics] Managed ML Diagnostics
- How to enable: Set
enable_managed_mldiagnostics: trueindeploy/ctk_v2/xmc-deployment-template.yaml(orreconciler.enableManagedMlDiagnostics: trueindeploy/helm/values.yaml). - What's New:
mlrunURL Caching & 409 Conflict Log Downgrade in Reconciler: Cached resolvedmlrunURLs across the batch flush window in the JobSet reconciler and downgraded expected 409 conflict responses duringmlrunsync from error to info/debug logs (#1500).
⚙️ 4. Operational, Infrastructure & Engineering Velocity
Changes relevant to cluster operators, CI/CD, and internal architecture that do not alter the end-user interface.
- Public Repository Launch Readiness, Documentation & Sanitization: Rewrote
README.mdfor public onboarding and architecture discovery (#1527, #1601), addedSECURITY.mdvulnerability reporting guidelines (#1528), documented the fork-based pull request workflow inCONTRIBUTING.md(#1529), and sanitized hardcoded environment domains, project IDs, and internal references across the codebase (#1519). - Nightly E2E Verification, Triage Tooling & Per-PR Examples Smoke Checks: Added per-PR and nightly
examples-smokeimport verification across all example entrypoints and verification modules (#1486, #1523, #1524, #1530), fixednightly-visual-snapshot.ymlto installxmanagerand localxdash(#1504), added thetriage_nightly_run.pyCLI,/XMC Fix Nightlyskill, and branch dispatch support indispatch_and_watch.py(#1549), hardened ROD UI nightly verification and pure parsing unit tests (#1545, #1547, #1550), and updated KinD E2EComponentCR fixtures to set requiredspec.stability(#1564). - Repo-Wide Lint, Type-Checking & Build Toolchain Hygiene: Enabled whole-repo
mypytype checking and cross-file pre-commit gates on file deletions (#1565, #1571), enforced repository file-naming conventions viacheck_file_naming.py(#1573), aligned UI dependencies with the Angular build toolchain andrun_ui_tests.pyfast-fail hints (#1512, #1525, #1531), included//cmd/uiPython tests in backend CI test scope resolution (#1556), and hardenedtools/common/tool_utils.py,tools/pr_review/, and agent workflow documentation (#1518, #1520, #1532, #1533, #1534, #1535, #1536, #1552, #1553, #1554, #1555, #1557, #1558, #1559, #1560, #1574).