Skip to content
Open
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
56 changes: 56 additions & 0 deletions sdk/ai/azure-ai-agents/REVAPI_REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# RevAPI failure report

Baseline command:

```powershell
mvn clean install
```

Result: the build failed in `org.revapi:revapi-maven-plugin:0.15.1:check` while comparing
`com.azure:azure-ai-agents:2.1.0` against `2.2.0-beta.1`. Tests and coverage completed before the
RevAPI check.

## Version resolution

RevAPI resolves the old artifact from Maven's active repositories because this package does not set
`revapi.oldArtifacts` or `revapi.oldVersion`. The inherited parent config sets
`<versionFormat>^\d+\.\d+\.\d+$</versionFormat>`, so `RELEASE` resolves to the latest stable version
matching that pattern and excludes beta versions. In this build, that resolved to
`com.azure:azure-ai-agents:2.1.0`; the new artifact is the local project version,
`2.2.0-beta.1`.

## Beta-annotated surface

The 2.1.0 source jar contains no `@Beta` annotations, including on removed classes. The RevAPI
findings below are on types that are `@Beta(warningText = "Preview API. AgentsOptimization=V2Preview")`
in the current source, but the corresponding 2.1.0 API was not beta-annotated.

| Current beta type | RevAPI changes |
| --- | --- |
| `OptimizationCandidate` | Removed `getConfig()`, `getPassRate()`, `getTaskScores()`, and `isParetoOptimal()`. |
| `OptimizationJob` | Public no-arg constructor visibility increased; removed `getDataset()`. |
| `OptimizationJobInputs` | Constructor changed from `(AgentIdentifier, DatasetRef)` to `(OptimizationAgentIdentifier, OptimizationDatasetInput, List<OptimizationEvaluatorRef>)`; `getAgent()` return type changed; `getEvaluators()` list element type changed; removed train/validation dataset reference getters and affected setters. |
| `OptimizationJobProgress` | Removed `getCurrentIteration()`. |
| `OptimizationJobResult` | `getBaseline()` and `getBest()` now return `String` instead of `OptimizationCandidate`; removed `getOptions()`, `getWarnings()`, and `isAllTargetAttributesFailed()`. |
| `OptimizationOptions` | Removed `getMaxIterations()` and `setMaxIterations(Integer)`. |

## Other non-beta API changes

These RevAPI failures are outside the beta-annotated surface:

| Area | RevAPI changes |
| --- | --- |
| `AgentsClient` / `AgentsAsyncClient` | `deleteSession`, `downloadAgentCode`, `getSession`, and `listSessions` signatures changed by removing the `AgentDefinitionOptInKeys` parameter. |
| Removed models | `AgentIdentifier`, `AgentProtocol`, `CandidateDeployConfig`, `CandidateFileInfo`, `CandidateMetadata`, `CandidateResults`, `DatasetInfo`, `DatasetRef`, `OptimizationAgentDefinition`, `OptimizationTaskResult`, `PromoteCandidateInput`, and `PromoteCandidateResult` were removed. None were `@Beta` in 2.1.0. |
| `ProtocolVersionRecord` | Constructor parameter and `getProtocol()` return type changed from `AgentProtocol` to `AgentEndpointProtocol`. |

## Least-verbose exception shape

The concise exception set is four grouped RevAPI rules:

1. `java.method.numberOfParametersChanged` for the affected `AgentsClient` / `AgentsAsyncClient` methods.
2. `java.class.removed` for the removed optimization/protocol model names.
3. A regex covering optimization model method removals, return-type changes, constructor parameter changes, and visibility increase.
4. A regex covering `ProtocolVersionRecord` parameter/return type changes.

Those exceptions are in `revapi.json` and appended from `pom.xml` so the inherited RevAPI config remains active.
11 changes: 11 additions & 0 deletions sdk/ai/azure-ai-agents/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,17 @@
</rules>
</configuration>
</plugin>
<plugin>
<groupId>org.revapi</groupId>
<artifactId>revapi-maven-plugin</artifactId>
<configuration>
<analysisConfigurationFiles combine.children="append">
<configurationFile>
<path>${project.basedir}/revapi.json</path>
</configurationFile>
</analysisConfigurationFiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
38 changes: 38 additions & 0 deletions sdk/ai/azure-ai-agents/revapi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[
{
"extension": "revapi.differences",
"configuration": {
"ignore": true,
"differences": [
{
"code": "java.method.numberOfParametersChanged",
"old": {
"matcher": "regex",
"match": "method .* com\\.azure\\.ai\\.agents\\.Agents(Async)?Client::(deleteSession|downloadAgentCode|getSession|listSessions)\\(.*\\)"
},
"justification": "Breaking change in beta operation: session and hosted-agent code methods no longer expose AgentDefinitionOptInKeys. The opt-in key is now sent implicitly and userIsolationKey/agentVersion are the public parameters."
},
{
"code": "java.class.removed",
"old": {
"matcher": "regex",
"match": "class com\\.azure\\.ai\\.agents\\.models\\.(AgentIdentifier|AgentProtocol|CandidateDeployConfig|CandidateFileInfo|CandidateMetadata|CandidateResults|DatasetInfo|DatasetRef|OptimizationAgentDefinition|OptimizationTaskResult|PromoteCandidateInput|PromoteCandidateResult)"
},
"justification": "Breaking change in beta operation: optimization and agent protocol models were renamed, restructured, or removed to align with the current service contract."
},
{
"regex": true,
"code": "java\\.method\\.(numberOfParametersChanged|removed|returnTypeChanged|returnTypeTypeParametersChanged|visibilityIncreased)",
"old": "method .* com\\.azure\\.ai\\.agents\\.models\\.Optimization(Candidate|Job|JobInputs|JobProgress|JobResult|Options)::.*",
"justification": "Breaking change in beta operation: optimization models were restructured to align with the current AgentsOptimization preview contract."
},
{
"regex": true,
"code": "java\\.method\\.(parameterTypeChanged|returnTypeChanged)",
"old": "(method|parameter) .* com\\.azure\\.ai\\.agents\\.models\\.ProtocolVersionRecord::.*",
"justification": "AgentProtocol was renamed to AgentEndpointProtocol to align protocol-version records with the current service contract."
}
]
}
}
]
51 changes: 51 additions & 0 deletions sdk/ai/azure-ai-projects/REVAPI_REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# RevAPI failure report

Baseline command:

```powershell
mvn clean install
```

Result: the build failed in `org.revapi:revapi-maven-plugin:0.15.1:check` while comparing
`com.azure:azure-ai-projects:2.1.0` against `2.2.0-beta.1`. Tests and coverage completed before the
RevAPI check.

## Version resolution

RevAPI resolves the old artifact from Maven's active repositories because this package does not set
`revapi.oldArtifacts` or `revapi.oldVersion`. The inherited parent config sets
`<versionFormat>^\d+\.\d+\.\d+$</versionFormat>`, so `RELEASE` resolves to the latest stable version
matching that pattern and excludes beta versions. In this build, that resolved to
`com.azure:azure-ai-projects:2.1.0`; the new artifact is the local project version,
`2.2.0-beta.1`.

## Beta-annotated surface

The 2.1.0 source jar contains no `@Beta` annotations. The only RevAPI failure on a type that is
`@Beta` in the current source is:

| Current beta type | RevAPI change |
| --- | --- |
| `RoutineRun` | `getStatus()` return type changed from `String` to `BinaryData`. |

`RoutineRun` is currently annotated with `@Beta(warningText = "Preview API. Routines=V1Preview")`,
but it was not `@Beta` in the 2.1.0 source.

## Other non-beta API changes

These RevAPI failures are outside the beta-annotated surface:

| Area | RevAPI changes |
| --- | --- |
| `ModelVersion` | Removed `getSystemData()`, which returned `SystemDataV3`. |
| Removed models | `SystemDataV3` was removed. It was not `@Beta` in 2.1.0. |

## Least-verbose exception shape

The concise exception set is three exact RevAPI rules:

1. `java.method.removed` for `ModelVersion.getSystemData()`.
2. `java.class.removed` for `SystemDataV3`.
3. `java.method.returnTypeChanged` for `RoutineRun.getStatus()`.

Those exceptions are in `revapi.json` and appended from `pom.xml` so the inherited RevAPI config remains active.
11 changes: 11 additions & 0 deletions sdk/ai/azure-ai-projects/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,17 @@ Code generated by Microsoft (R) TypeSpec Code Generator.
</rules>
</configuration>
</plugin>
<plugin>
<groupId>org.revapi</groupId>
<artifactId>revapi-maven-plugin</artifactId>
<configuration>
<analysisConfigurationFiles combine.children="append">
<configurationFile>
<path>${project.basedir}/revapi.json</path>
</configurationFile>
</analysisConfigurationFiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
26 changes: 26 additions & 0 deletions sdk/ai/azure-ai-projects/revapi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"extension": "revapi.differences",
"configuration": {
"ignore": true,
"differences": [
{
"code": "java.method.removed",
"old": "method com.azure.ai.projects.models.SystemDataV3 com.azure.ai.projects.models.ModelVersion::getSystemData()",
"justification": "SystemDataV3 was removed from ModelVersion because the current service contract no longer exposes system data on model versions."
},
{
"code": "java.class.removed",
"old": "class com.azure.ai.projects.models.SystemDataV3",
"justification": "SystemDataV3 was removed because the current service contract no longer exposes this model."
},
{
"code": "java.method.returnTypeChanged",
"old": "method java.lang.String com.azure.ai.projects.models.RoutineRun::getStatus()",
"new": "method com.azure.core.util.BinaryData com.azure.ai.projects.models.RoutineRun::getStatus()",
"justification": "Breaking change in beta operation: RoutineRun status changed from String to BinaryData to align with the current Routines preview contract."
}
]
}
}
]