Skip to content

3.5.2

Release Date: May 8, 2026


🐛 Bug Fixes

Terraform: Fix Race Condition in saif-resources Identity Module 🔧

Commit: befc4020

The identity module in saif-resources derived resource_group_name from context.naming — a string computed at plan time — creating no data-flow dependency on the actual resource group resource. Under Terraform's parallelism, azurerm_user_assigned_identity could start before the resource group existed, causing intermittent ResourceGroupNotFound (404) errors that required a retry to resolve.

Root Cause:

All other modules (cosmosdb, api, bot) accept explicit resource_group_name and resource_group_location inputs wired from module.resource_group.*, giving Terraform a real dependency edge. The identity module was the only outlier.

Fix:

  • Added resource_group_name and resource_group_location variables to the identity module, consistent with the established pattern
  • azurerm_user_assigned_identity now uses the explicit inputs instead of deriving from context.naming
  • Smithy consumer updated to pass module.resource_group.resource_group_name and module.resource_group.location directly
  • Terraform now infers the dependency through data flow — no depends_on workaround needed

Impact: Eliminates intermittent Terraform apply failures in the bot_infra deployment that required retries to resolve.


Platform: Fix AddAzureDefaults Double-Registration of Feature Management 🔧

Commit: b07be024

AddAzureDefaults() registered feature management as a singleton via AddFeatureManagement(). Applications that also called AddScopedFeatureManagement() — required to support scoped feature filters such as auth context — received a FeatureManagementException: Singleton feature management has been registered crash at startup.

Root Cause:

PR #640 added AddFeatureManagement() to AddAzureDefaults() as part of label-based feature flag isolation. Smithy's Program.cs was already calling AddScopedFeatureManagement(). Mixing a singleton and a scoped registration of the same service throws at startup with no fallback.

Fix:

  • AddAzureDefaults() now calls AddScopedFeatureManagement() instead of AddFeatureManagement() — scoped is strictly more capable and supports feature filters that consume scoped services
  • Removed the now-redundant explicit AddScopedFeatureManagement() call from Smithy/Program.cs

Impact: Resolves smithy-prod container crash-loop (exit code 139) and the resulting 503 errors returned to all clients including the CLI MCP bridge.


CLI: Fix Resource Identifier for Smithy Server 🔧

Commit: f93f86c0

The Smithy MCP server entry in appsettings.json used api://smithy as the OAuth resource identifier. The correct app registration identifier is api://smithy-prod, which is required for the CLI to acquire a valid access token when connecting to the Smithy MCP endpoint.

Fix: Updated Resource from api://smithy to api://smithy-prod in the CLI configuration.

Impact: Resolves CLI authentication failures when connecting to the Smithy MCP server.


⚠️ Breaking Changes

None in this release ✅


📦 Dependencies

No dependency changes in this release.