From f84e5def6f3ed00ffb92d85cbd564231bb5bb264 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 30 Sep 2025 20:47:00 +0000
Subject: [PATCH 1/6] Initial plan
From 8ff3d23513aa3ce8f2582d0771be43f97b84a14e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 30 Sep 2025 20:53:43 +0000
Subject: [PATCH 2/6] Add DeviceAuthorization field to OpenApiOAuthFlows with
v3.2 support and v3.1/v3.0 extension
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
---
.../Models/OpenApiConstants.cs | 5 +++++
.../Models/OpenApiOAuthFlows.cs | 22 +++++++++++++++++++
.../V3/OpenApiOAuthFlowsDeserializer.cs | 1 +
.../V31/OpenApiOAuthFlowsDeserializer.cs | 1 +
.../V32/OpenApiOAuthFlowsDeserializer.cs | 3 ++-
5 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/src/Microsoft.OpenApi/Models/OpenApiConstants.cs b/src/Microsoft.OpenApi/Models/OpenApiConstants.cs
index f79a6374c..d5c37d3d4 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiConstants.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiConstants.cs
@@ -560,6 +560,11 @@ public static class OpenApiConstants
///
public const string AuthorizationCode = "authorizationCode";
+ ///
+ /// Field: DeviceAuthorization
+ ///
+ public const string DeviceAuthorization = "deviceAuthorization";
+
///
/// Field: AuthorizationUrl
///
diff --git a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs
index 42c9cf935..a83670f39 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs
@@ -31,6 +31,11 @@ public class OpenApiOAuthFlows : IOpenApiSerializable, IOpenApiExtensible
///
public OpenApiOAuthFlow? AuthorizationCode { get; set; }
+ ///
+ /// Configuration for the OAuth Device Authorization flow.
+ ///
+ public OpenApiOAuthFlow? DeviceAuthorization { get; set; }
+
///
/// Specification Extensions.
///
@@ -51,6 +56,7 @@ public OpenApiOAuthFlows(OpenApiOAuthFlows oAuthFlows)
Password = oAuthFlows?.Password != null ? new(oAuthFlows.Password) : null;
ClientCredentials = oAuthFlows?.ClientCredentials != null ? new(oAuthFlows.ClientCredentials) : null;
AuthorizationCode = oAuthFlows?.AuthorizationCode != null ? new(oAuthFlows.AuthorizationCode) : null;
+ DeviceAuthorization = oAuthFlows?.DeviceAuthorization != null ? new(oAuthFlows.DeviceAuthorization) : null;
Extensions = oAuthFlows?.Extensions != null ? new Dictionary(oAuthFlows.Extensions) : null;
}
@@ -106,6 +112,22 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
AuthorizationCode,
callback);
+ // deviceAuthorization - only for v3.2+, otherwise as extension
+ if (version >= OpenApiSpecVersion.OpenApi3_2)
+ {
+ writer.WriteOptionalObject(
+ OpenApiConstants.DeviceAuthorization,
+ DeviceAuthorization,
+ callback);
+ }
+ else if (DeviceAuthorization is not null)
+ {
+ writer.WriteOptionalObject(
+ OpenApiConstants.ExtensionFieldNamePrefix + "oai-" + OpenApiConstants.DeviceAuthorization,
+ DeviceAuthorization,
+ callback);
+ }
+
// extensions
writer.WriteExtensions(Extensions, version);
diff --git a/src/Microsoft.OpenApi/Reader/V3/OpenApiOAuthFlowsDeserializer.cs b/src/Microsoft.OpenApi/Reader/V3/OpenApiOAuthFlowsDeserializer.cs
index 895a1225c..7c62177c0 100644
--- a/src/Microsoft.OpenApi/Reader/V3/OpenApiOAuthFlowsDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V3/OpenApiOAuthFlowsDeserializer.cs
@@ -23,6 +23,7 @@ internal static partial class OpenApiV3Deserializer
private static readonly PatternFieldMap _oAuthFlowsPatternFields =
new()
{
+ {s => s.Equals("x-oai-deviceAuthorization", StringComparison.OrdinalIgnoreCase), (o, p, n, t) => o.DeviceAuthorization = LoadOAuthFlow(n, t)},
{s => s.StartsWith(OpenApiConstants.ExtensionFieldNamePrefix, StringComparison.OrdinalIgnoreCase), (o, p, n, _) => o.AddExtension(p, LoadExtension(p,n))}
};
diff --git a/src/Microsoft.OpenApi/Reader/V31/OpenApiOAuthFlowsDeserializer.cs b/src/Microsoft.OpenApi/Reader/V31/OpenApiOAuthFlowsDeserializer.cs
index ea8444f1a..fd37a4032 100644
--- a/src/Microsoft.OpenApi/Reader/V31/OpenApiOAuthFlowsDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V31/OpenApiOAuthFlowsDeserializer.cs
@@ -20,6 +20,7 @@ internal static partial class OpenApiV31Deserializer
private static readonly PatternFieldMap _oAuthFlowsPatternFields =
new()
{
+ {s => s.Equals("x-oai-deviceAuthorization", StringComparison.OrdinalIgnoreCase), (o, p, n, t) => o.DeviceAuthorization = LoadOAuthFlow(n, t)},
{s => s.StartsWith(OpenApiConstants.ExtensionFieldNamePrefix, StringComparison.OrdinalIgnoreCase), (o, p, n, _) => o.AddExtension(p, LoadExtension(p,n))}
};
diff --git a/src/Microsoft.OpenApi/Reader/V32/OpenApiOAuthFlowsDeserializer.cs b/src/Microsoft.OpenApi/Reader/V32/OpenApiOAuthFlowsDeserializer.cs
index e6071400a..99f0fafca 100644
--- a/src/Microsoft.OpenApi/Reader/V32/OpenApiOAuthFlowsDeserializer.cs
+++ b/src/Microsoft.OpenApi/Reader/V32/OpenApiOAuthFlowsDeserializer.cs
@@ -14,7 +14,8 @@ internal static partial class OpenApiV32Deserializer
{"implicit", (o, n, t) => o.Implicit = LoadOAuthFlow(n, t)},
{"password", (o, n, t) => o.Password = LoadOAuthFlow(n, t)},
{"clientCredentials", (o, n, t) => o.ClientCredentials = LoadOAuthFlow(n, t)},
- {"authorizationCode", (o, n, t) => o.AuthorizationCode = LoadOAuthFlow(n, t)}
+ {"authorizationCode", (o, n, t) => o.AuthorizationCode = LoadOAuthFlow(n, t)},
+ {"deviceAuthorization", (o, n, t) => o.DeviceAuthorization = LoadOAuthFlow(n, t)}
};
private static readonly PatternFieldMap _oAuthFlowsPatternFields =
From a2e7ef2125895044ad83487dfdacefe02a968669 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 30 Sep 2025 21:03:29 +0000
Subject: [PATCH 3/6] Add tests for DeviceAuthorization serialization and
update public API
Co-authored-by: baywet <7905502+baywet@users.noreply.github.com>
---
.../Models/OpenApiOAuthFlowsTests.cs | 95 +++++++++++++++++++
.../PublicApi/PublicApi.approved.txt | 2 +
2 files changed, 97 insertions(+)
diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
index 2b423e48a..f0b6af2b9 100644
--- a/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
+++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
@@ -48,6 +48,20 @@ public class OpenApiOAuthFlowsTests
}
};
+ public static OpenApiOAuthFlows OAuthFlowsWithDeviceAuthorization = new()
+ {
+ DeviceAuthorization = new()
+ {
+ TokenUrl = new("http://example.com/token"),
+ RefreshUrl = new("http://example.com/refresh"),
+ Scopes = new Dictionary
+ {
+ ["scopeName1"] = "description1",
+ ["scopeName2"] = "description2"
+ }
+ }
+ };
+
[Fact]
public async Task SerializeBasicOAuthFlowsAsV3JsonWorks()
{
@@ -139,5 +153,86 @@ public async Task SerializeOAuthFlowsWithMultipleFlowsAsV3JsonWorks()
expected = expected.MakeLineBreaksEnvironmentNeutral();
Assert.Equal(expected, actual);
}
+
+ [Fact]
+ public async Task SerializeOAuthFlowsWithDeviceAuthorizationAsV32JsonWorks()
+ {
+ // Arrange
+ var expected =
+ """
+ {
+ "deviceAuthorization": {
+ "tokenUrl": "http://example.com/token",
+ "refreshUrl": "http://example.com/refresh",
+ "scopes": {
+ "scopeName1": "description1",
+ "scopeName2": "description2"
+ }
+ }
+ }
+ """;
+
+ // Act
+ var actual = await OAuthFlowsWithDeviceAuthorization.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_2);
+
+ // Assert
+ actual = actual.MakeLineBreaksEnvironmentNeutral();
+ expected = expected.MakeLineBreaksEnvironmentNeutral();
+ Assert.Equal(expected, actual);
+ }
+
+ [Fact]
+ public async Task SerializeOAuthFlowsWithDeviceAuthorizationAsV31JsonWorks()
+ {
+ // Arrange
+ var expected =
+ """
+ {
+ "x-oai-deviceAuthorization": {
+ "tokenUrl": "http://example.com/token",
+ "refreshUrl": "http://example.com/refresh",
+ "scopes": {
+ "scopeName1": "description1",
+ "scopeName2": "description2"
+ }
+ }
+ }
+ """;
+
+ // Act
+ var actual = await OAuthFlowsWithDeviceAuthorization.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_1);
+
+ // Assert
+ actual = actual.MakeLineBreaksEnvironmentNeutral();
+ expected = expected.MakeLineBreaksEnvironmentNeutral();
+ Assert.Equal(expected, actual);
+ }
+
+ [Fact]
+ public async Task SerializeOAuthFlowsWithDeviceAuthorizationAsV3JsonWorks()
+ {
+ // Arrange
+ var expected =
+ """
+ {
+ "x-oai-deviceAuthorization": {
+ "tokenUrl": "http://example.com/token",
+ "refreshUrl": "http://example.com/refresh",
+ "scopes": {
+ "scopeName1": "description1",
+ "scopeName2": "description2"
+ }
+ }
+ }
+ """;
+
+ // Act
+ var actual = await OAuthFlowsWithDeviceAuthorization.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_0);
+
+ // Assert
+ actual = actual.MakeLineBreaksEnvironmentNeutral();
+ expected = expected.MakeLineBreaksEnvironmentNeutral();
+ Assert.Equal(expected, actual);
+ }
}
}
diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
index f19136fe9..a26e3650f 100644
--- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
+++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
@@ -454,6 +454,7 @@ namespace Microsoft.OpenApi
public const string DependentRequired = "dependentRequired";
public const string Deprecated = "deprecated";
public const string Description = "description";
+ public const string DeviceAuthorization = "deviceAuthorization";
public const string Discriminator = "discriminator";
public const string DollarRef = "$ref";
public const string DollarSchema = "$schema";
@@ -927,6 +928,7 @@ namespace Microsoft.OpenApi
public OpenApiOAuthFlows(Microsoft.OpenApi.OpenApiOAuthFlows oAuthFlows) { }
public Microsoft.OpenApi.OpenApiOAuthFlow? AuthorizationCode { get; set; }
public Microsoft.OpenApi.OpenApiOAuthFlow? ClientCredentials { get; set; }
+ public Microsoft.OpenApi.OpenApiOAuthFlow? DeviceAuthorization { get; set; }
public System.Collections.Generic.IDictionary? Extensions { get; set; }
public Microsoft.OpenApi.OpenApiOAuthFlow? Implicit { get; set; }
public Microsoft.OpenApi.OpenApiOAuthFlow? Password { get; set; }
From 126c86fe19efa211001822856007c4e3062e2bf6 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Tue, 30 Sep 2025 21:24:56 -0400
Subject: [PATCH 4/6] chore: adds missing import
---
test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
index f0b6af2b9..bc102681e 100644
--- a/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
+++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
@@ -2,6 +2,7 @@
// Licensed under the MIT license.
using System.Collections.Generic;
+using System.Text.Json.Nodes;
using System.Threading.Tasks;
using Xunit;
From f6a7b9e82c49edcd8b437133b8d3ad635d9bcf81 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Tue, 30 Sep 2025 21:25:51 -0400
Subject: [PATCH 5/6] Apply suggestions from code review
---
.../Models/OpenApiOAuthFlowsTests.cs | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
index bc102681e..cba2e1c93 100644
--- a/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
+++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiOAuthFlowsTests.cs
@@ -177,9 +177,7 @@ public async Task SerializeOAuthFlowsWithDeviceAuthorizationAsV32JsonWorks()
var actual = await OAuthFlowsWithDeviceAuthorization.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_2);
// Assert
- actual = actual.MakeLineBreaksEnvironmentNeutral();
- expected = expected.MakeLineBreaksEnvironmentNeutral();
- Assert.Equal(expected, actual);
+ Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
}
[Fact]
@@ -204,9 +202,7 @@ public async Task SerializeOAuthFlowsWithDeviceAuthorizationAsV31JsonWorks()
var actual = await OAuthFlowsWithDeviceAuthorization.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_1);
// Assert
- actual = actual.MakeLineBreaksEnvironmentNeutral();
- expected = expected.MakeLineBreaksEnvironmentNeutral();
- Assert.Equal(expected, actual);
+ Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
}
[Fact]
@@ -231,9 +227,7 @@ public async Task SerializeOAuthFlowsWithDeviceAuthorizationAsV3JsonWorks()
var actual = await OAuthFlowsWithDeviceAuthorization.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_0);
// Assert
- actual = actual.MakeLineBreaksEnvironmentNeutral();
- expected = expected.MakeLineBreaksEnvironmentNeutral();
- Assert.Equal(expected, actual);
+ Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), JsonNode.Parse(actual)));
}
}
}
From 434cfc092454b10c1c22abca75eaf4101ebe1656 Mon Sep 17 00:00:00 2001
From: Vincent Biret
Date: Wed, 1 Oct 2025 08:34:51 -0400
Subject: [PATCH 6/6] chore: updates benchmark results
---
.../performance.Descriptions-report-github.md | 12 ++--
.../performance.Descriptions-report.csv | 8 +--
.../performance.Descriptions-report.html | 12 ++--
.../performance.Descriptions-report.json | 2 +-
.../performance.EmptyModels-report-github.md | 60 +++++++++----------
.../performance.EmptyModels-report.csv | 56 ++++++++---------
.../performance.EmptyModels-report.html | 58 +++++++++---------
.../performance.EmptyModels-report.json | 2 +-
8 files changed, 105 insertions(+), 105 deletions(-)
diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md
index ba4ba6917..92580f7a6 100644
--- a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md
+++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md
@@ -10,9 +10,9 @@ Job=ShortRun IterationCount=3 LaunchCount=1
WarmupCount=3
```
-| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
-|------------- |-------------:|------------:|------------:|-----------:|-----------:|----------:|-------------:|
-| PetStoreYaml | 442.4 μs | 110.3 μs | 6.05 μs | 62.5000 | 11.7188 | - | 387.38 KB |
-| PetStoreJson | 199.5 μs | 106.8 μs | 5.85 μs | 40.0391 | 8.7891 | - | 249.52 KB |
-| GHESYaml | 959,128.1 μs | 77,233.5 μs | 4,233.43 μs | 66000.0000 | 22000.0000 | 4000.0000 | 384512.09 KB |
-| GHESJson | 459,066.4 μs | 43,160.0 μs | 2,365.75 μs | 40000.0000 | 16000.0000 | 3000.0000 | 245982.3 KB |
+| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
+|------------- |-------------:|-------------:|-------------:|-----------:|-----------:|----------:|-------------:|
+| PetStoreYaml | 439.2 μs | 322.1 μs | 17.65 μs | 62.5000 | 11.7188 | - | 387.38 KB |
+| PetStoreJson | 197.7 μs | 181.5 μs | 9.95 μs | 40.0391 | 8.7891 | - | 249.52 KB |
+| GHESYaml | 912,587.8 μs | 748,677.7 μs | 41,037.55 μs | 66000.0000 | 22000.0000 | 4000.0000 | 384511.62 KB |
+| GHESJson | 476,268.8 μs | 199,447.2 μs | 10,932.38 μs | 40000.0000 | 16000.0000 | 3000.0000 | 245982.3 KB |
diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv
index bc3e80912..77b5a12cf 100644
--- a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv
+++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv
@@ -1,5 +1,5 @@
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Gen0,Gen1,Gen2,Allocated
-PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,442.4 μs,110.3 μs,6.05 μs,62.5000,11.7188,0.0000,387.38 KB
-PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,199.5 μs,106.8 μs,5.85 μs,40.0391,8.7891,0.0000,249.52 KB
-GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"959,128.1 μs","77,233.5 μs","4,233.43 μs",66000.0000,22000.0000,4000.0000,384512.09 KB
-GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"459,066.4 μs","43,160.0 μs","2,365.75 μs",40000.0000,16000.0000,3000.0000,245982.3 KB
+PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,439.2 μs,322.1 μs,17.65 μs,62.5000,11.7188,0.0000,387.38 KB
+PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,197.7 μs,181.5 μs,9.95 μs,40.0391,8.7891,0.0000,249.52 KB
+GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"912,587.8 μs","748,677.7 μs","41,037.55 μs",66000.0000,22000.0000,4000.0000,384511.62 KB
+GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"476,268.8 μs","199,447.2 μs","10,932.38 μs",40000.0000,16000.0000,3000.0000,245982.3 KB
diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html
index d62f414ac..b887f40f0 100644
--- a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html
+++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html
@@ -2,7 +2,7 @@
-performance.Descriptions-20250930-170442
+performance.Descriptions-20251001-082523