diff --git a/telemetry-exporter/README.md b/telemetry-exporter/README.md
index aca68feda..6b17d7b23 100644
--- a/telemetry-exporter/README.md
+++ b/telemetry-exporter/README.md
@@ -1,14 +1,10 @@
-# Durable Execution Telemetry Exporter (preview)
+# Durable Execution Telemetry Exporter
Instrumentation plugin for the AWS Lambda Durable Execution Java SDK that emits a curated,
per-execution **Durable Execution Telemetry record** to one or more pluggable exporters. It ports the
JavaScript `durableExecutionTelemetry()` contract (canonical record schema `1.0`) to the Java plugin hook
surface.
-> **Preview API.** Every public type is annotated
-> `@software.amazon.lambda.durable.annotations.Experimental` to signal it is experimental and may
-> change or be removed in a future release without a major-version bump.
-
## Usage
```java
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java
index 3eafe1ee5..e2f2c2e60 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ArnParser.java
@@ -2,15 +2,12 @@
// SPDX-License-Identifier: Apache-2.0
package software.amazon.lambda.durable.telemetry;
-import software.amazon.lambda.durable.annotations.Experimental;
-
/**
* Parses the durable execution ARN into its component fields, mirroring the JS {@code parseExecutionArn}.
*
*
Format:
* {@code arn::lambda:::function::/durable-execution//}.
*/
-@Experimental
public final class ArnParser {
private final String functionName;
private final String qualifier;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java
index ae3e3f9af..4d15e1fc8 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ContentConfig.java
@@ -5,7 +5,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* Controls what data is included in emitted records (input/output transforms, operation overrides, error inclusion).
@@ -24,7 +23,6 @@
* the cached input snapshot or any later emission — and a non-fatal transform failure omits the field and is logged.
* VM/thread-termination errors propagate.
*/
-@Experimental
public final class ContentConfig {
private final boolean includeInput;
private final Function inputTransform;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java
index bcf5871c1..f9cd9871e 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetry.java
@@ -10,7 +10,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import software.amazon.awssdk.services.lambda.model.ErrorObject;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.exception.DurableOperationException;
import software.amazon.lambda.durable.exception.UnrecoverableDurableExecutionException;
import software.amazon.lambda.durable.plugin.DurableExecutionPluginFactory;
@@ -46,7 +45,6 @@
* {@link TelemetrySettings}, the exporters, and the {@link ExportScheduler} that serializes exports across every
* execution the environment hosts.
*/
-@Experimental
public final class DurableExecutionTelemetry {
private static final Logger logger = LoggerFactory.getLogger(DurableExecutionTelemetry.class);
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java
index b9d2fc193..b146644bb 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryConfig.java
@@ -4,14 +4,11 @@
import java.util.ArrayList;
import java.util.List;
-import software.amazon.lambda.durable.annotations.Experimental;
/** Configuration for the Durable Execution Telemetry plugin. Mirrors the JS {@code DurableExecutionTelemetryConfig}. */
-@Experimental
public final class DurableExecutionTelemetryConfig {
/** When records are emitted. */
- @Experimental
public enum EmitMode {
ON_COMPLETE,
ON_CHANGE,
@@ -19,7 +16,6 @@ public enum EmitMode {
}
/** Which operations to include in each record's operations array. */
- @Experimental
public enum OperationDetail {
TOP_LEVEL,
FULL_TREE
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java
index 93e768040..fd5ba65b9 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/DurableExecutionTelemetryRecord.java
@@ -7,7 +7,6 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* The curated execution record emitted to destinations.
@@ -16,7 +15,6 @@
* identical (camelCase names, absent fields omitted). Exactly one of {@code operations} (array) or the
* {@code operationsByName} rendering is emitted, depending on the exporter's {@code render}.
*/
-@Experimental
public final class DurableExecutionTelemetryRecord {
String recordType = "DurableExecutionTelemetry";
String schemaVersion = "1.0";
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java
index 2d9752322..6deb64862 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/ErrorInfo.java
@@ -4,7 +4,6 @@
import java.util.LinkedHashMap;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* Error detail carried on a record or operation: {@code {name, message, cause?}}, the shape shared by the Telemetry
@@ -15,7 +14,6 @@
* applied here, when the error is created, so it holds for the error and every cause. Applying it again leaves the
* value unchanged.
*/
-@Experimental
public final class ErrorInfo {
/** Longest {@code name} or {@code message} written, in Unicode code points, before the {@code …} marker. */
static final int MAX_CHARS = 8_192;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java
index f0023d180..2b64b958e 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Json.java
@@ -14,11 +14,9 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.internal.FatalErrors;
/** Minimal JSON helper for emitting telemetry records and measuring their serialized size. */
-@Experimental
public final class Json {
// Register JavaTimeModule and emit ISO-8601 (not numeric timestamps) so SDK-default payload types such as
// java.time.Instant/Duration in an included input/output/result serialize instead of throwing and silently
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java
index f42be02b9..3d19a6bce 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationOverride.java
@@ -3,7 +3,6 @@
package software.amazon.lambda.durable.telemetry;
import java.util.function.Function;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* Per-operation override controlling inclusion and result transformation, matched by {@code operationName}.
@@ -15,7 +14,6 @@
* argument is safe, and a transform that throws omits the field (the failure is logged) rather than leaking the raw
* value or failing the execution. An {@code exclude} override drops the operation entirely.
*/
-@Experimental
public final class OperationOverride {
private final String operationName;
private final boolean exclude;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java
index efde64308..aea2bdb06 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationRecord.java
@@ -4,7 +4,6 @@
import java.util.LinkedHashMap;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* A single operation within an execution (step, wait, invoke, callback, or context).
@@ -12,7 +11,6 @@
* Mirrors the JS {@code OperationRecord} interface field-for-field so the emitted wire JSON is identical. A
* {@code null} field is treated as absent and omitted from the wire map (distinct from an explicit JSON null).
*/
-@Experimental
public final class OperationRecord {
private String id;
private String name;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java
index 130c043a1..b29c84372 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationSummary.java
@@ -4,7 +4,6 @@
import java.util.LinkedHashMap;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* A per-operation-name summary emitted (as an {@code operationsByName} map) by point-access exporters (CloudWatch
@@ -14,7 +13,6 @@
* {@code type}, {@code subType}, {@code status} reflect the most recently seen occurrence; {@code result}/{@code error}
* are included only when the name occurs exactly once.
*/
-@Experimental
public final class OperationSummary {
String type;
String subType;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java
index 98398e36a..82b057d25 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/OperationsIndex.java
@@ -5,7 +5,6 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* Builds a name-keyed index of operation summaries from the canonical operations array.
@@ -15,7 +14,6 @@
* {@code error} (no single representative value). Scalar fields ({@code type}, {@code subType}, {@code status}) reflect
* the most recently seen occurrence. Unnamed operations are skipped.
*/
-@Experimental
public final class OperationsIndex {
private OperationsIndex() {}
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java
index eae15fde9..42aa6f79e 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/TelemetryExporter.java
@@ -2,10 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
package software.amazon.lambda.durable.telemetry;
-import software.amazon.lambda.durable.annotations.Experimental;
-
/** Exports workflow telemetry records to a destination. */
-@Experimental
public interface TelemetryExporter {
/** Emits one record to the destination. */
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java
index e3c19faa5..8b0e0e224 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/Truncation.java
@@ -7,7 +7,6 @@
import java.util.List;
import java.util.function.Function;
import java.util.function.Supplier;
-import software.amazon.lambda.durable.annotations.Experimental;
/**
* Best-effort size limiter. When the record is over the limit it drops, in order:
@@ -29,7 +28,6 @@
* execution {@code error} and identity fields are never dropped, so a record can still be over a limit smaller than
* those fields.
*/
-@Experimental
public final class Truncation {
private Truncation() {}
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java
index ae78d75bb..78dd37210 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/AuroraExporter.java
@@ -10,7 +10,6 @@
import software.amazon.awssdk.services.rdsdata.model.ExecuteStatementRequest;
import software.amazon.awssdk.services.rdsdata.model.Field;
import software.amazon.awssdk.services.rdsdata.model.SqlParameter;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -20,11 +19,9 @@
* per execution keyed by execution ARN. Requires the Data API enabled on the cluster, {@code rds-data:ExecuteStatement}
* and {@code secretsmanager:GetSecretValue}.
*/
-@Experimental
public final class AuroraExporter implements TelemetryExporter {
/** Database engine; selects the upsert dialect. */
- @Experimental
public enum Engine {
POSTGRESQL("postgresql"),
MYSQL("mysql");
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java
index 0119f677d..85cd3ee0b 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/CloudWatchLogsExporter.java
@@ -11,7 +11,6 @@
import software.amazon.awssdk.services.cloudwatchlogs.model.CreateLogStreamRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.InputLogEvent;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutLogEventsRequest;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -21,7 +20,6 @@
* {@code operationsByName} map. Mirrors the JS {@code CloudWatchLogsExporter}. Requires {@code logs:CreateLogStream}
* and {@code logs:PutLogEvents} on the target log group.
*/
-@Experimental
public final class CloudWatchLogsExporter implements TelemetryExporter {
private final String logGroupName;
private final String logStreamPrefix;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java
index a1f5a970b..949b57b2d 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/DynamoDBExporter.java
@@ -11,7 +11,6 @@
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -21,7 +20,6 @@
* default sort key ({@code emittedAt}) every export adds a history item; with the sort key disabled each export
* overwrites the execution's item. Emits the {@code operationsByName} map. Requires {@code dynamodb:PutItem}.
*/
-@Experimental
public final class DynamoDBExporter implements TelemetryExporter {
private final String tableName;
private final String partitionKey;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java
index 452d016ea..5d94e020c 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/EventBridgeExporter.java
@@ -9,7 +9,6 @@
import software.amazon.awssdk.services.eventbridge.model.PutEventsRequestEntry;
import software.amazon.awssdk.services.eventbridge.model.PutEventsResponse;
import software.amazon.awssdk.services.eventbridge.model.PutEventsResultEntry;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -18,7 +17,6 @@
* Exports workflow telemetry records to Amazon EventBridge, one PutEvents entry per record with the record status as
* {@code DetailType} and the record JSON as {@code Detail}. Requires {@code events:PutEvents}.
*/
-@Experimental
public final class EventBridgeExporter implements TelemetryExporter {
/**
* Default event source. The {@code aws.} prefix is reserved for AWS service events and is rejected by PutEvents.
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java
index 81901227a..6b9caced3 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FileExporter.java
@@ -11,7 +11,6 @@
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -21,11 +20,9 @@
* (default), or written as one pretty-printed JSON file per execution that later exports overwrite. Suitable for an EFS
* mount or {@code /tmp}. No truncation limit by default.
*/
-@Experimental
public final class FileExporter implements TelemetryExporter {
/** File layout. */
- @Experimental
public enum Mode {
/** Append every record to {@code {directory}/{YYYY-MM-DD}.ndjson}. */
NDJSON("ndjson"),
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java
index 16f90f5f7..9b95f313f 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/FirehoseExporter.java
@@ -8,7 +8,6 @@
import software.amazon.awssdk.services.firehose.FirehoseClient;
import software.amazon.awssdk.services.firehose.model.PutRecordRequest;
import software.amazon.awssdk.services.firehose.model.Record;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -17,7 +16,6 @@
* Exports workflow telemetry records to Amazon Data Firehose, one PutRecord per record as a newline-terminated JSON
* line so concatenated deliveries stay parseable as NDJSON. Requires {@code firehose:PutRecord}.
*/
-@Experimental
public final class FirehoseExporter implements TelemetryExporter {
private final String deliveryStreamName;
private final OperationsFormat operationsFormat;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java
index 6723f46df..5001a7d5c 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/HttpExporter.java
@@ -12,7 +12,6 @@
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -21,11 +20,9 @@
* Exports workflow telemetry records to an HTTP endpoint as a JSON body, one request per record. A non-2xx response
* fails the export. No truncation limit by default; set one if the endpoint caps request size.
*/
-@Experimental
public final class HttpExporter implements TelemetryExporter {
/** Request method. */
- @Experimental
public enum Method {
POST,
PUT;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java
index cc58960b8..fb3c38b77 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/LambdaLogExporter.java
@@ -5,7 +5,6 @@
import java.time.Instant;
import java.util.LinkedHashMap;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -34,7 +33,6 @@
* application log level filtering is unchanged: with the JSON log format and an application log level of {@code WARN}
* or above, these lines are dropped, as raw record lines were before.
*/
-@Experimental
public final class LambdaLogExporter implements TelemetryExporter {
/** UTF-8 size of the envelope around an empty {@code message}; the timestamp always has the same width. */
private static final int ENVELOPE_BYTES =
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java
index f8468a394..fdbe6aeaf 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OTelExporter.java
@@ -14,7 +14,6 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -24,11 +23,9 @@
* record with identity fields as resource and log attributes and the full record JSON as the body. Compatible with any
* OTLP-capable backend; authentication is via headers.
*/
-@Experimental
public final class OTelExporter implements TelemetryExporter {
/** OTLP transport encoding. */
- @Experimental
public enum Protocol {
HTTP_JSON("http/json"),
HTTP_PROTOBUF("http/protobuf");
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java
index 69e9771dc..2c78e29ea 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OpenSearchExporter.java
@@ -22,7 +22,6 @@
import software.amazon.awssdk.http.SdkHttpRequest;
import software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner;
import software.amazon.awssdk.http.auth.spi.signer.SignedRequest;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -32,11 +31,9 @@
* document id so later exports overwrite the same document. Authenticates with SigV4 (default) or HTTP basic auth.
* Requires {@code es:ESHttpPut} on the index for SigV4.
*/
-@Experimental
public final class OpenSearchExporter implements TelemetryExporter {
/** Authentication method. */
- @Experimental
public enum Auth {
/** IAM request signing for Amazon OpenSearch Service (default). */
SIGV4("sigv4"),
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java
index e75ed8f31..95bfa24f8 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/OperationsFormat.java
@@ -3,11 +3,9 @@
package software.amazon.lambda.durable.telemetry.exporters;
import java.util.Map;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
/** How an exporter renders operations in the emitted record. */
-@Experimental
public enum OperationsFormat {
/** The canonical {@code operations} array (lossless; default). */
ARRAY("array"),
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java
index 99a8b6f1b..89f7086f9 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/RedshiftExporter.java
@@ -10,7 +10,6 @@
import software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
import software.amazon.awssdk.services.redshiftdata.model.ExecuteStatementRequest;
import software.amazon.awssdk.services.redshiftdata.model.SqlParameter;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -22,7 +21,6 @@
* ({@code redshift-serverless:GetCredentials}, {@code redshift:GetClusterCredentialsWithIAM}, or
* {@code secretsmanager:GetSecretValue}).
*/
-@Experimental
public final class RedshiftExporter implements TelemetryExporter {
private final String database;
private final String fqTable;
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java
index 3db659e6f..c5d466e61 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/S3Exporter.java
@@ -5,7 +5,6 @@
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -15,11 +14,9 @@
* overwrite the same object). Emits the canonical {@code operations}-array wire shape. Mirrors the JS
* {@code S3Exporter}.
*/
-@Experimental
public final class S3Exporter implements TelemetryExporter {
/** How to partition objects in S3. */
- @Experimental
public enum Partitioning {
DATE,
FUNCTION_NAME,
diff --git a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java
index 4e727d9d4..eaff167ff 100644
--- a/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java
+++ b/telemetry-exporter/src/main/java/software/amazon/lambda/durable/telemetry/exporters/SQSExporter.java
@@ -13,7 +13,6 @@
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.MessageAttributeValue;
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
-import software.amazon.lambda.durable.annotations.Experimental;
import software.amazon.lambda.durable.telemetry.DurableExecutionTelemetryRecord;
import software.amazon.lambda.durable.telemetry.Json;
import software.amazon.lambda.durable.telemetry.TelemetryExporter;
@@ -23,7 +22,6 @@
* {@code status} / {@code functionName} message attributes. On a FIFO queue the group id defaults to the execution ARN
* and the deduplication id is the execution ARN plus {@code emittedAt}. Requires {@code sqs:SendMessage}.
*/
-@Experimental
public final class SQSExporter implements TelemetryExporter {
private final String queueUrl;
private final String messageGroupId;