Operations · docs/releases/1.2.0-plan.md

BlueTusk 1.2 release contract

BlueTusk 1.2 is a coordinated expansion release, not six unrelated package updates. Every BlueTusk dependency in one application remains on the same exact version. The machine-readable authority is

4 min read736 wordsSource synchronized
View source on GitHub
ON THIS PAGE

BlueTusk 1.2 release contract

BlueTusk 1.2 is a coordinated expansion release, not six unrelated package updates. Every BlueTusk dependency in one application remains on the same exact version. The machine-readable authority is eng/v1.2-release-contract.json.

What 1.2 adds

  • a complete dotnet new bluetusk-production Clean Architecture starter and read-only bluetusk doctor preflight;
  • Kafka, S3/Parquet, and signed webhook Sync destinations;
  • Kubernetes custom resources and reconciliation;
  • fleet inventory, RBAC, approval, audit, replay, reconciliation, and rebuild operations in Control Plane;
  • variable-length, undirected, and multi-label graph patterns; and
  • Vue and Svelte Live clients alongside Angular, React, and the framework-free client.

The starter, doctor, signed webhook, transactional Kafka destination, and immutable S3/Parquet lake destination are completed implementation slices. The template is built from the real Order Operations package-consumer application, including API, worker, migrations, tests, same-origin BFF security, telemetry, containers, Helm, SLOs, and runbooks. It supports React and Angular clients and starts local PostgreSQL 18, Redis, NATS JetStream, and OpenSearch with one Compose command.

The Kafka connector writes each whole source transaction and its compacted BlueTusk checkpoint in one broker transaction. Restart deduplication is driven by read_committed state, transform drift requires an explicit rebuild, and an ambiguous broker outcome cannot advance the Streams acknowledgement. Its live adapter has passed restart-deduplication and atomic event/checkpoint recovery against the digest-pinned Apache Kafka 4.1.1 image, including a broker with topic auto-creation enabled. The exact 24-hour endurance evidence remains a release gate rather than being inferred from a smoke test.

The S3 connector writes immutable Zstandard-compressed Parquet data before an immutable JSON commit manifest. Readers consume manifests only, so a crash can leave an unreachable data object but can never expose a committed checkpoint that refers to missing data. The production adapter has passed a digest-pinned MinIO smoke; the exact 24-hour gate remains outstanding.

The Kubernetes operator and fleet Control Plane slice is implemented. It ships a structural CRD, least-privilege RBAC, resource-version compare-and-swap patches, pre-mutation finalizers, bounded fleet reconciliation, sequential durable generation mapping, delete protection, and non-sensitive status. The Control Plane adds redacted /deployments, /api/fleet, and /api/v1/fleet inventory plus audited pause, resume, reconcile, rebuild, and Administrator-only delete operation kinds.

The graph and browser-client expansion slice is implemented. The typed graph compiler emits native undirected and multi-label SQL/PGQ, expands bounded paths of one to eight hops into at most 64 fixed GRAPH_TABLE branches, rejects ambiguous edge projections, and forces broad-impact patterns to authoritative repair. The generated SQL has materialised successfully against the pinned PostgreSQL 19 Beta 3 development image. Vue 3 and Svelte 5 packages now share the framework-neutral Live protocol core, batch notifications, expose read-only reactive state, and own component lifecycle cleanup. All five npm clients build and their deterministic tests pass together.

The long-duration release lane is provisioned in the isolated bluetusk-endurance Kubernetes namespace. It uses separate service pods so the database, broker, object store, search node, and runner are distributed across the cluster; exact-SHA reports are written to retained block storage. The launcher rejects commits that are not included in origin/main, requires the verified 72-hour Streams Job before it will start the 24-hour Sync Job, and then requires that exact Sync result before it starts the combined 24-hour Live and Control Plane Job. That final harness churns 10,000 Live rows, performs repeated authoritative drift checks, inventories 256 managed deployments, and proves Requested/Succeeded audit completion while recording latency, allocation, GC, and working-set evidence. There is no Continuous Graph Job until PostgreSQL 19 GA is available by digest. A live namespace smoke has verified the pinned .NET SDK, PowerShell, GitHub egress, DNS, and PostgreSQL connectivity without claiming endurance completion.

An optional one-hour Continuous Graph preview uses the same retained evidence volume and the pinned PostgreSQL 19 Beta 3 development image. The Job, labels, and generated marker all state releaseGate: false; it can expose endurance or recovery defects early, but it cannot replace the PostgreSQL 19 GA 24-hour gate.

Compatibility

The six existing product families retain the 1.0 source and binary contracts. Applications must not mix BlueTusk versions. General workloads support PostgreSQL 15–19, but Continuous Graph and the SQL/PGQ surface remain unavailable for stable publication until PostgreSQL 19 GA is digest-pinned and the exact Continuous Graph endurance gate passes.

Stable publication boundary

Stable packages remain disabled until build, security, performance, API, package-consumer, trimming, NativeAOT, Windows, Linux, endurance, recovery, rollback, pilot, provenance, and registry-verification gates all pass for the same immutable commit. A preview or RC result never silently promotes to stable.