Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ All notable changes to the AxonFlow Java SDK will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [8.0.1] - 2026-05-08 — Drop telemetry `profile` field

### Removed

- **Telemetry `profile` field** — collided with existing governance
`AXONFLOW_PROFILE` env var (allowlist `dev|default|strict|compliance`).
The v1 telemetry validator only accepted `dev|prod|unknown`, so any
customer setting `AXONFLOW_PROFILE=strict` or `=compliance` for
governance enforcement would have had their telemetry pings rejected
with HTTP 400. Removing the field reverts `AXONFLOW_PROFILE` to its
single governance purpose. The `deployment_mode` dimension already
carries the topology signal `profile` was meant to add.

## [8.0.0] - 2026-05-08 — Decision history API + telemetry simplification

**Major release.** The headline feature is the new decision-history client
Expand Down
2 changes: 1 addition & 1 deletion examples/explain-decision/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>8.0.0</version>
<version>8.0.1</version>
</dependency>
</dependencies>

Expand Down
2 changes: 1 addition & 1 deletion examples/list-decisions/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<dependency>
<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>8.0.0</version>
<version>8.0.1</version>
</dependency>
</dependencies>

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.getaxonflow</groupId>
<artifactId>axonflow-sdk</artifactId>
<version>8.0.0</version>
<version>8.0.1</version>
<packaging>jar</packaging>

<name>AxonFlow Java SDK</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,13 +235,6 @@ static String buildPayload(

root.put("instance_id", UUID.randomUUID().toString());

// v1 schema profile dimension. Free-form deployment classifier sourced from
// AXONFLOW_PROFILE; "unknown" when unset. Analytics dimension only.
String profileEnv = System.getenv("AXONFLOW_PROFILE");
String profile =
(profileEnv == null || profileEnv.trim().isEmpty()) ? "unknown" : profileEnv.trim();
root.put("profile", profile);

// Stream classifier: sandbox-mode clients self-tag so analytics can distinguish dev/test
// pings from production. Production-mode (and other modes) omit the field entirely so the
// server defaults to "heartbeat" — preserving byte-identical wire shape relative to v7.x
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ void testPayloadFormat() throws Exception {
assertThat(root.get("runtime_version").asText()).isEqualTo(System.getProperty("java.version"));
// v1 schema: 2-arg buildPayload defaults deployment_mode to "unknown".
assertThat(root.get("deployment_mode").asText()).isEqualTo("unknown");
assertThat(root.get("profile").asText()).isEqualTo("unknown");
assertThat(root.has("profile")).isFalse();
assertThat(root.get("features").isArray()).isTrue();
assertThat(root.get("features").size()).isEqualTo(0);
assertThat(root.get("instance_id").asText()).isNotEmpty();
Expand Down Expand Up @@ -164,7 +164,7 @@ void testCustomEndpoint(WireMockRuntimeInfo wmRuntimeInfo) throws Exception {
// v1 schema: deployment_mode classifies from sdk endpoint host; localhost
// resolves to self_hosted (the v1 allowlist removes the production label).
assertThat(body.get("deployment_mode").asText()).isEqualTo("self_hosted");
assertThat(body.get("profile").asText()).isEqualTo("unknown");
assertThat(body.has("profile")).isFalse();
assertThat(body.get("instance_id").asText()).isNotEmpty();
// production-mode payloads still omit stream on the wire.
assertThat(body.has("stream")).isFalse();
Expand Down
Loading