fix(conformance): batch E services to 100% on the refreshed models

Merged
VI
8h ago
+1478-43

Summary

Fixes every variant still failing on main outside the open PRs (apigatewayv2, bedrock, cloudfront, ecs, glue, monitoring, sqs).

  • apigatewayv2: product REST endpoint pages store TryItState. Product page / REST endpoint page updates are partial (omitted members keep their stored values) and return NotFoundException for a missing page instead of creating it. The existence check and the write share one lock, so an update can't bring back a page deleted at the same moment.
  • bedrock: the GET router keeps interior empty path segments, so an empty interior label (e.g. /automated-reasoning-policies//build-workflows/...) reaches its op and gets ValidationException instead of a 501. Trailing-slash -> List routing (#1645) is unchanged.
  • ecs capacity providers:
    • A provider needs exactly one backing (Auto Scaling group or Managed Instances config).
    • Managed Instances providers are cluster-scoped. They are listed when you pass cluster, by name or ARN, and Update/Delete honor cluster.
    • FARGATE/FARGATE_SPOT are listed after your own providers.
    • maxResults/nextToken paging works, responses never emit nulls, and the reserved-prefix check is case-insensitive.
    • CloudFormation stores the API's camelCase shape, applies the same backing rule, and keeps ClusterName only for Managed Instances providers (resolved from a name or an ARN).
  • glue: DeleteIntegration returns only its output members.
  • cloudwatch: PutLogAlarm accepts an empty QueryString, which the model allows.
  • probe:
    • negative_too_short is skipped only when the empty value is the final URI label and the shortened request is byte-identical to another op in the same model: same method, same path, same query literals. That request is the other op on the wire, and SDKs refuse empty labels client-side. The rule is derived from the model and unit-tested.
    • The XML validator honors member xmlName for flattened lists. An absent flattened list counts as empty, which fixes the SQS DeleteMessageBatch false failure.

Variant totals drop by 99 repo-wide from the skip (iot 27, appsync 12, transcribe 9, bedrock 7, s3 7, others smaller). Baseline and doc counts are regenerated in the final re-baseline batch.

Test plan

  • cargo fmt --check, cargo clippy --workspace --all-targets -D warnings
  • lib: conformance, ecs, cloudformation, apigatewayv2, bedrock, glue, cloudwatch, sqs
  • conformance tests: ecs, apigatewayv2, s3, bedrock, cloudfront, glue, cloudwatch, sqs
  • e2e: ecs, cloudformation_ecs, apigatewayv2, bedrock, glue, cloudwatch, sqs
  • probe 100%: apigatewayv2 2786, bedrock 4037, cloudfront 4110, ecs 2442, glue 10478, monitoring 1909, sqs 541, s3 4061

Summary by cubic

Fixes the remaining conformance failures on the refreshed models across apigatewayv2, bedrock, ecs, glue, cloudwatch, and sqs. Product page updates are now partial and return NotFoundException for a missing page, REST endpoint pages store TryItState, bedrock GET keeps interior empty path segments, DeleteIntegration omits IntegrationConfig, and PutLogAlarm accepts an empty QueryString.

ECS capacity providers

  • A provider needs exactly one backing: Auto Scaling group or Managed Instances; the reserved-prefix check is case-insensitive.
  • Managed Instances providers are cluster-scoped by name or ARN; Update/Delete must name their own cluster, and FARGATE/FARGATE_SPOT are listed after your own providers.
  • maxResults/nextToken paging works and responses never emit nulls.
  • CloudFormation stores the API's camelCase shape and applies the same backing and cluster rules.

Conformance probe fixes

  • negative_too_short is skipped only when an empty trailing label collapses the request onto a byte-identical same-method operation.
  • The XML validator honors member xmlName and treats an absent flattened list as empty, fixing the SQS DeleteMessageBatch false failure.