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-productionClean Architecture starter and read-onlybluetusk doctorpreflight; - 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.