Forge 2026.05.0 — Release Notes

Release date: 2026-05-22 Based on: Forge 2026.04.0 + new features License: Apache License 2.0


Overview

Forge 2026.05.0 is the platform's GA milestone. The Kubernetes operator graduates to v1.0.0 with a complete resource model (9 CRDs) and multi-cluster control-plane support, the dev-cluster moves to a production-shaped 3-master/4-worker HA k3s topology, and the AI Assistant is repackaged as a single all-in-one image that runs on a single PVC.


Component Versions

Component Version Notes
forge-backend 2026.05.0 Migration 0208 fix for DriftAlertRule audit fields
forge-frontend 0.1.0 No changes this cycle (UI from v2026.04.0 still current)
forge-assistant 2026.05.0 All-in-one image (Ollama + ChromaDB embedded), gemma3:1b default
forge-operator 1.0.0 5 new CRDs, multi-cluster, OLM bundle
forge-helm 1.0.0 appVersion: 2026.05.0
forge-dev-cluster 3m+4w k3s 1.30 (was 2m+2w kubeadm)

New Features

Forge Operator v1.0.0 — Complete Resource Model + Multi-Cluster

The Kubernetes operator now covers the full Forge object graph and can fan out to multiple Forge backends from a single control plane.

5 new CRDs:

Multi-cluster (forgeapi.ClientPool):

Per-CR resolution of which Forge backend to write to. CRs without spec.forgeInstance fall back to the default client supplied via --forge-url / --forge-token. Generation-gated cache invalidation on the ForgeInstance reconciler rebuilds the client lazily when the target URL or secret reference changes.

OLM packaging:

Resource model summary:

CRD Scope Reconciles to
Inventory Namespaced /api/v2/inventories/
Credential Namespaced /api/v2/credentials/
JobTemplate Namespaced /api/v2/job_templates/
Schedule Namespaced /api/v2/schedules/
Project Namespaced /api/v2/projects/
Organization Cluster /api/v2/organizations/
Team Namespaced /api/v2/teams/ + user membership
Workflow Namespaced /api/v2/workflow_job_templates/ + DAG nodes
ForgeInstance Namespaced (control-plane only; no upstream call)

Forge Assistant — All-in-One Image

The AI Assistant is repackaged from three Compose services (Ollama + ChromaDB + FastAPI + a setup container) into one container with a single /data volume.

The Helm chart (assistant.enabled=true) provisions a single Deployment + PVC + Service (default 20 GiB volume, 1 GiB/250m requests, 4 GiB/2 vCPU limits, startupProbe failureThreshold: 30 ≈ 5 min boot budget for the first-pull model download).

Forge Helm 1.0.0

Dev-Cluster — 3-Master / 4-Worker HA k3s

The Vagrant test cluster (forge-dev-cluster) was rebuilt for production-shaped HA:

Provisioning scripts renamed: master-init.sh / master-join.sh / worker-join.shserver-init.sh / server-join.sh / agent-join.sh.


Bug Fixes

Backend — DriftAlertRule cascade-delete (migration 0208)

DriftAlertRule rows could not be cascade-deleted from an Organization: the original 0198_drift_models migration omitted the created_by / modified_by FK columns inherited from PrimordialModel, so any ORM query joining the audit columns blew up with psycopg.UndefinedColumn.


Upgrade Path

From 2026.04.0 → 2026.05.0

Backend (forge-helm upgrade):

helm repo update
helm upgrade forge forgeplatform/forge -n forge \
  --version 1.0.0 \
  --reuse-values
kubectl -n forge exec deploy/forge-web -- forge-manage migrate

The 0208 migration is forward-compatible (nullable column add, SET_NULL FKs). No downtime; existing DriftAlertRule rows backfill with NULL audit fields.

Operator (forge-operator upgrade):

If upgrading the operator from 0.3.x to 1.0.0:

# 1. Apply the new CRDs first (Helm hooks won't re-install CRDs).
kubectl apply -f https://github.com/forgeplatform/forge-operator/releases/download/v1.0.0/crds.yaml

# 2. Upgrade the operator chart.
helm upgrade forge-operator forgeplatform/forge-operator -n forge-operator \
  --version 1.0.0 \
  --reuse-values

Existing Inventory / Credential / JobTemplate / Schedule CRs continue to work unchanged.

Multi-cluster (optional):

To start fanning out to multiple Forge backends, create a ForgeInstance per backend and reference it in your CRs:

apiVersion: forge.forgeplatform.io/v1alpha1
kind: ForgeInstance
metadata:
  name: forge-staging
spec:
  url: https://forge-staging.example.com
  tokenSecretRef:
    name: forge-staging-token
    key: token
---
apiVersion: forge.forgeplatform.io/v1alpha1
kind: JobTemplate
metadata:
  name: deploy-staging
spec:
  forgeInstance: forge-staging   # routes to the staging backend
  ...

CRs without spec.forgeInstance continue to use the default operator-wide URL/token.


Documentation

New / updated documentation:


Known Issues


Quality Metrics

Metric Value
Operator e2e (live 3m+4w k3s) 9/9 CRDs reconcile cleanly
Backend regression (test_drift_audit_fields_schema) passing
Helm chart (helm lint + helm template, both default and assistant.enabled=true) passing
Operator OLM bundle (operator-sdk bundle validate) passing (4 warnings, see Known Issues)