# Changelog

## Score

- CAI 36 → 39 (+3.3)
- Rubric changed (rubric-2026.08.13 → rubric-2026.08.14) — scores are not directly comparable.

## Lenses

- Code Health 70 → 71 (+0.0)
- Architecture 78 → 78 (+0.0)
- Maturity 48 → 42 (-6.0)
- Readiness 25 → 26 (+1.0)
- Security 34 → 59 (+25.6)
- Event-Driven 100 → 82 (-17.7)
- Accessibility 47 → 47 (+0.0)
- Performance 71 → 71 (+0.0)

## Resolved (16)

- Bounded contexts not declared
- Duplicate functionality exposed via different types. 'CloudEventPartitionsController' exposes 'ListPartitionsByType' as an API endpoint, while 'CloudEventToolset' exposes the exact same method signature as a service/tool. This suggests the controller is just a thin wrapper around the toolset, or the toolset is duplicated in the API layer.
- Inconsistent HTTP method mapping or naming for resource mutations. 'CreateResource' likely maps to POST, while 'ReplaceResource' likely maps to PUT/PATCH. However, 'Replace' is a specific semantic (full update) that is often less common than 'Update' or 'Upsert'. More importantly, the naming convention for mutations is inconsistent: 'Create', 'Patch', 'Delete', 'Replace'. 'Patch' and 'Replace' are both update operations but use different verbs. 'Replace' is ambiguous compared to standard CRUD 'Update' or 'Upsert'.
- No ADRs found
- Redundant/Confusing naming for similar operations. 'GetClusterResources' and 'ListClusterResources' appear to perform the same logical operation (retrieving a collection of resources). 'Get' often implies a single item or metadata, while 'List' implies a collection, but here both return collections. Furthermore, 'List' includes pagination parameters (maxResults, continuationToken) while 'Get' does not, suggesting they might be different endpoints for the same resource type, which is confusing.
- XML-doc coverage: CloudStreams.Broker.Api (src/broker/CloudStreams.Broker.Api/CloudStreams.Broker.Api.csproj)
- XML-doc coverage: CloudStreams.Broker.Application (src/broker/CloudStreams.Broker.Application/CloudStreams.Broker.Application.csproj)
- XML-doc coverage: CloudStreams.Core (src/core/CloudStreams.Core/CloudStreams.Core.csproj)
- XML-doc coverage: CloudStreams.Core.Api (src/core/CloudStreams.Core.Api/CloudStreams.Core.Api.csproj)
- XML-doc coverage: CloudStreams.Core.Api.Client (src/core/CloudStreams.Core.Api.Client/CloudStreams.Core.Api.Client.csproj)
- XML-doc coverage: CloudStreams.Core.Application (src/core/CloudStreams.Core.Application/CloudStreams.Core.Application.csproj)
- XML-doc coverage: CloudStreams.Dashboard (src/dashboard/CloudStreams.Dashboard/CloudStreams.Dashboard.csproj)
- XML-doc coverage: CloudStreams.Dashboard.StateManagement (src/dashboard/CloudStreams.Dashboard.StateManagement/CloudStreams.Dashboard.StateManagement.csproj)
- XML-doc coverage: CloudStreams.Gateway.Api (src/gateway/CloudStreams.Gateway.Api/CloudStreams.Gateway.Api.csproj)
- XML-doc coverage: CloudStreams.Gateway.Application (src/gateway/CloudStreams.Gateway.Application/CloudStreams.Gateway.Application.csproj)
- no ADRs to check

## New (22)

- IL measured
- Oversized method: CloudStreams.Broker.Application.Services.SubscriptionHandler/<CatchUpAsync>d__93.MoveNext
- Oversized method: CloudStreams.Broker.Application.Services.SubscriptionHandler/<DispatchAsync>d__91.MoveNext
- Oversized method: CloudStreams.Broker.Application.Services.SubscriptionHandler/<InitializeCloudEventStreamAsync>d__81.MoveNext
- Oversized method: CloudStreams.Broker.Application.Services.SubscriptionHandler/<RetryDispatchAsync>d__92.MoveNext
- Oversized method: CloudStreams.Broker.Application.Services.SubscriptionManager/<StartAsync>d__17.MoveNext
- Oversized method: CloudStreams.Core.Api.Services.BrokerHealthMonitor/<OnHealthCheckIntervalElapsedAsync>d__31.MoveNext
- Oversized method: CloudStreams.Core.Api.Services.GatewayHealthMonitor/<OnHealthCheckIntervalElapsedAsync>d__31.MoveNext
- Oversized method: CloudStreams.Dashboard.Components.CloudEventDetails.BuildRenderTree
- Oversized method: CloudStreams.Dashboard.Components.ReadOptionsForm.BuildRenderTree
- Oversized method: CloudStreams.Dashboard.Components.Timeline.BuildRenderTree
- Oversized method: CloudStreams.Dashboard.Components.TimelineStateManagement.TimelineStore/<GatherCloudEventsAsync>d__16.MoveNext
- Oversized method: CloudStreams.Dashboard.Pages.Brokers.List.View.BuildRenderTree
- Oversized method: CloudStreams.Dashboard.Pages.Brokers.List.View/<>c__DisplayClass0_0.<BuildRenderTree>b__10
- Oversized method: CloudStreams.Dashboard.Pages.CloudEvents.List.View/<>c__DisplayClass0_0.<BuildRenderTree>b__7
- Oversized method: CloudStreams.Dashboard.Pages.Gateways.List.View.BuildRenderTree
- Oversized method: CloudStreams.Dashboard.Pages.Gateways.List.View/<>c__DisplayClass0_0.<BuildRenderTree>b__10
- Oversized method: CloudStreams.Dashboard.Pages.Subscriptions.List.View.BuildRenderTree
- Oversized method: CloudStreams.Dashboard.Pages.Subscriptions.List.View/<>c__DisplayClass0_0.<BuildRenderTree>b__11
- Oversized method: CloudStreams.Gateway.Application.Services.CloudEventAdmissionControl/<EvaluateAsync>d__37.MoveNext
- …and 2 more

## API surface

- 17 added · 0 removed (a removed endpoint is potentially breaking)

## Added endpoints (17)

- DELETE /{name}
- GET /
- GET /api/core/v1/cloud-events/partitions/{type}
- GET /api/core/v1/cloud-events/partitions/{type}/byid
- GET /api/core/v1/cloud-events/stream
- GET /api/core/v1/cloud-events/stream/read
- GET /api/resources/v1/gateways/{name}/health
- GET /api/resources/v1/subscriptions/{name}/export
- GET /definition
- GET /list
- GET /watch
- GET /{name}
- PATCH /{name}
- PATCH /{name}/status
- POST /
- POST /api/events/pub
- PUT /
