From 635eb12702e1a9dd64cc54620cf074fd380f49af Mon Sep 17 00:00:00 2001 From: Eric Law <39393654+acn-ericlaw@users.noreply.github.com> Date: Tue, 22 Sep 2026 17:45:51 -0700 Subject: [PATCH] Release 4.12.15: version bump and CHANGELOG (the lock-step round with the engines) Co-Authored-By: Claude Fable 5.1 --- CHANGELOG.md | 20 ++++++++++++-------- README.md | 2 +- pyproject.toml | 2 +- src/mercury_composable/version.py | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b375c90..0f2ae07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,12 @@ # Changelog -## Unreleased (4.12.15 in preparation) +## Version 4.12.15, 9/22/2026 -### Changed - -- The forwarder's span kind now follows the engines' connected-span-tree rule: the record whose - `service` is `http.request` - an engine edge's round-trip record - is the `SERVER` span, and every - function execution is `INTERNAL` (a record's `from` no longer decides the kind). A host's own - records are function executions, so a backend now shows them as `INTERNAL` hops under the - calling engine's edge span. +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 @@ -26,6 +24,12 @@ ### Changed +- The forwarder's span kind now follows the engines' connected-span-tree rule: the record whose + `service` is `http.request` - an engine edge's round-trip record - is the `SERVER` span, and every + function execution is `INTERNAL` (a record's `from` no longer decides the kind). A host's own + records are function executions, so a backend now shows them as `INTERNAL` hops 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-flash` id is no longer served (404 on a current key) - the alias moves with the provider's current flash model. `llm.model` / `params.model` still pin a specific id. diff --git a/README.md b/README.md index 4d30393..1f92970 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ graph task calls a Python function exactly as if it were local. [AI Agent Guide](https://accenture.github.io/mercury-python/guides/ai-agent-guide/) for deterministic function generation. -> **Status:** v4.12.1 is on PyPI — `pip install mercury-composable`. This repository was +> **Status:** v4.12.15 is on PyPI — `pip install mercury-composable`. This repository was > repurposed in August 2026 for the polyglot initiative. The legacy Mercury language-pack > implementation remains in git history. diff --git a/pyproject.toml b/pyproject.toml index 20d4512..1578cc4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "mercury-composable" -version = "4.12.1" +version = "4.12.15" description = "Lightweight Event-over-HTTP function host and client for Mercury Composable" readme = "README.md" license = "Apache-2.0" diff --git a/src/mercury_composable/version.py b/src/mercury_composable/version.py index 077a3cb..a7a9db1 100644 --- a/src/mercury_composable/version.py +++ b/src/mercury_composable/version.py @@ -1,3 +1,3 @@ """Package version - the single Python-side source (pyproject.toml mirrors it).""" -__version__ = "4.12.1" +__version__ = "4.12.15"