Repository navigation
v4.12.15
Version 4.12.15, 9/22/2026
The lock-step round with the engines: the pack moves from 4.12.1 to 4.12.15, the number the Java engine and the
Rust port ship in the same round (conv-ports-adopt-java-release-number — a version names content, not a
cadence). Interop evidence for this release: the four-runtime OpenTelemetry certification drive of 2026-09-22 —
this host's forwarder and llm.stream node under both engines' edges, one connected trace per request, confirmed
in the backend UI (docs/test-reports/otel-dynatrace-certification.md). Off by default; nothing to configure.
Added
- The OpenTelemetry trace forwarder (
mercury_composable.otel), the lock-step twin of the
engines'opentelemetry-forwarderextension: withotel.forwarding=truethe host hands
every distributed-trace dataset it emits to the engines' extension route
distributed.trace.forwarder, where the built-in forwarder maps it to one OpenTelemetry
span carrying the host's exact W3C ids and exports it over OTLP/HTTP (protobuf) - the same
otel.*keys, span mapping, per-export credential headers, retry policy and failure
diagnostics as the Java and Rust forwarders. No OpenTelemetry SDK and no new dependency:
the encoder is the Rust port's hand-written OTLP writer, ported. Off by default. - The
distributed.trace.forwarderextension route itself: a function an application
registers under that name receives every emitted dataset (delivered without a trace, so
the forwarder's own execution emits none) - the engines' zero-tracing forwarder contract.
Changed
-
The forwarder's span kind now follows the engines' connected-span-tree rule: the record whose
serviceishttp.request- an engine edge's round-trip record - is theSERVERspan, and every
function execution isINTERNAL(a record'sfromno longer decides the kind). A host's own
records are function executions, so a backend now shows them asINTERNALhops under the
calling engine's edge span. -
The demo AI nodes' default Gemini model is the stable alias
gemini-flash-latest: the dated
gemini-3.6-flashid is no longer served (404 on a current key) - the alias moves with the
provider's current flash model.llm.model/params.modelstill pin a specific id. -
The demo
application.ymlcarries theotel.*keys switched off, wired to the
OTLP_API_ENDPOINT,OTLP_AUTH_HEADERandOTLP_TOKENenvironment variables, so
-Dotel.forwarding=trueat run time is enough to export to a backend.