I Shipped...

9 September 2026 (11PRs)

consistent aggregate reads across historical views

I fixed a problem where aggregate reads could diverge across historical sources, produce unstable synthetic row identities, or validate aggregate predicates without the resolved payload. Now the query evaluator uses consistent aggregate materialisation and payload-aware validation across the supported historical read paths.

complete Rust artifact cache coverage

I fixed a problem where turbo's manually maintained Rust input globs could omit transitive dependencies. Now cLI, NAPI, WASM and fast-WASM inputs match their declared non-dev local Cargo dependency closures.

clear Jazz Classic API errors

I fixed a problem where classic imports fail with generic missing-export errors. Now selected Classic usage raises JAZZCLASSICAPIREMOVED with the offending API and links to current documentation.

clean SSE shutdown

I fixed a problem where active SSE responses could keep HTTP shutdown open, and requests crossing shutdown could continue into authentication or mutation work. Now existing streams observe EOF promptly, new requests fail at the admission gate, and Jazz shutdown still runs after HTTP close outcomes.

cancellation of stale Inspector submissions

I fixed a problem where a slow schema-hash lookup could complete after cancellation and replace or close connection state that belonged to a newer UI lifetime. Now only the current live submission may publish connection state; stale asynchronous completions are inert.

cancel-safe tools-client shutdown

I fixed a problem where the per-client driver could remain parked indefinitely or complete a reconnect after shutdown because shutdown did not own or cancel the spawned task. Now shutdown owns the driver join handle, wakes cancellation-sensitive states, joins normal completion, aborts cancelled completion, and prioritises cancellation over reconnect admission.

bounded native prepared-query cache retention

I fixed a problem where full literal-byte query keys and native prepared objects were retained for the runtime lifetime. Now a 256-entry/1 MiB inactive LRU is pinned by active read, subscription, and coverage leases.

bounded Inspector control sessions

I fixed a problem where silent or partially failed control acquisition could retain listeners and worker ports indefinitely; late attachment success could outlive the requesting UI; failure payloads could lose structure. Now every non-success ownership transition deterministically cancels pending work and sends the worker close protocol before local disposal.

bounded Edge catalogue forwarding

I fixed a problem where edges buffered complete authority responses without an application cap or total deadline. Now canonical requests and ordinary responses are capped at 8 MiB; GET /schemas defaults to a configurable 64 MiB.

atomic multisink shape preparation

I fixed a problem where a failed multisink preparation could leave new or shared binding-source state behind. Now failed preparation is atomic for new state and leaves existing active shared state usable for retry.

application-scoped server storage

I fixed a problem where implicit server storage and environment defaults could be shared or selected inconsistently across applications. Now implicit storage paths are application-scoped, while explicit CLI options override environment configuration deterministically.

8 September 2026 (1PR)

browser pending-write recovery after offline restart

I updated Jazz so fixes 2633: a persistent browser client could acknowledge a 500-row transaction locally, read it correctly, and then hang after a full offline browser restart.

4 September 2026 (8PRs)

transformed included and hopped relation rows

I fixed a problem where included and hopped rows could expose raw stored values, and a source column sharing a relation or hidden-include name could overwrite or impersonate the materialised relation. Now every materialised row uses its owning table's transforms.

same-path staged binary preservation

I updated Jazz so preserve a staged executable when its source is already the destination or a filesystem alias; replace genuinely distinct binaries without overwriting the old executable inode.

safe JOIN ON name validation

I updated Jazz so rejects ambiguous SQL JOIN ON operands instead of resolving each operand opportunistically against a different input.

relation alias handling during lowering

I fixed a problem where relation column aliases were not consistently represented in the graph, and union arms with compatible types but different field names could not be combined. Now authored aliases apply only to public fields; internal binding fields retain their identity and routing role.

ordered lens rename handling

I fixed a problem where grouping transformations by kind could apply a later rename against the wrong intermediate table or column identity. Now lens translation follows the operation stream, so chained and mixed renames observe the state produced by every preceding operation.

hosted credential redaction during app creation

I updated Jazz to redact hosted credentials from generated environment files. I also changed it to preserve retry placeholders without persisting secrets.

cancellable subscription startup

I updated Jazz so make cancellation work while a subscription is waiting to start.

cancellable streaming WASM writes

I updated Jazz so make abort work while a streaming write is still storing a chunk.