Skip to content

parity: per-service AWS audit of all 163 services - #2452

Open
agbishop wants to merge 741 commits into
mainfrom
chore/parity-sweep-2026-09-03
Open

parity: per-service AWS audit of all 163 services#2452
agbishop wants to merge 741 commits into
mainfrom
chore/parity-sweep-2026-09-03

Conversation

@agbishop

@agbishop agbishop commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

Per-service AWS parity audit of all 163 services, one service at a time, each
verified against the pinned aws-sdk-go-v2 source rather than from memory.

What this is

Every service got an audit issue under epic gopherstack-plq, covering five
dimensions: AWS behavior compliance, LocalStack parity, cross-service
integration, performance, and resource leaks. All 163 are closed.

Every confirmed bug carries its own bd issue and a regression test that was
proven to fail without its fix — each guard neutered individually by line
number, with the build confirmed still green so a compile error could not
masquerade as a passing proof.

Recurring bug classes

The sweep kept surfacing the same shapes, which is the useful output here:

  • Ghost rows after delete (8 findings). A delete path clears the primary
    row but not a side map keyed by the same identity, so a recreated resource
    inherits the dead one's state. Worst case: docdb's
    DeleteDBClusterSnapshot left snapshotAttributes behind, so a snapshot
    recreated under a reused identifier inherited the previous one's
    cross-account restore grants.
  • Parsed-then-dropped or never-parsed fields — the single most common
    finding across the campaign.
  • Fabricated fields and modes — a filter the operation does not model
    (vpclattice's serviceArn), or a convenience behavior invented for an
    omitted required member (ses's empty PolicyNames meaning "return
    everything").
  • Documented constraints never enforced — mutual exclusivity
    (sagemakerruntime's Body vs InputLocation), required members, and
    bidirectional field pairings (transcribe's ShowSpeakerLabels /
    MaxSpeakerLabels).
  • Non-total sort comparators, where an unrelated delete reorders tied rows
    because pkgs/store.Index.remove swaps the last element into the removed
    slot.
  • A real data race in outposts: ListOutposts/ListSites returned the
    live backend pointers Table.Snapshot hands out, then released the lock
    while the handler read them unlocked.

Verification

Every agent finding was re-derived independently before being committed: the
SDK citation re-read verbatim, the per-operation modeled error set extracted
directly from deserializers.go, and the regression test re-run against a
neutered guard. Several agent claims were corrected or rejected in the
process, and a few agent pushbacks against the brief were accepted as correct.

make bd-audit reports zero trailer mismatches and zero typo'd IDs across all
commits. TestSnapshotVersionGuard is green and the persistence golden was
refreshed only for additive field changes, never to silence a version bump.

Known limitations

  • LocalStack parity is largely NOT CHECKED. No LocalStack instance was
    available; agents reported this honestly rather than claiming clean. The
    wire-shape and error-code work is the solid part.
  • Later services leaned on each PARITY.md's own documented convention —
    trust rows marked ok whose files are unchanged since last_audit_commit
    rather than re-deriving every operation.
  • The campaign filed a backlog of follow-up issues that remain open and
    unfixed, including permission boundaries never consulted in the IAM
    enforcement path and .sync step-function tasks degrading to
    fire-and-forget. Those were scoped out of the audits, not resolved by them.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m

@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 2139 files, which is 2039 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 480e7626-466a-4c93-878a-9ee521311ae8

📥 Commits

Reviewing files that changed from the base of the PR and between 2536297 and a509513.

⛔ Files ignored due to path filters (1)
  • .badges/operations.svg is excluded by !**/*.svg
📒 Files selected for processing (2139)
  • .beads/issues.jsonl
  • .claude/skills/gopherstack-gates/SKILL.md
  • .claude/skills/gopherstack-map/SKILL.md
  • .claude/skills/gopherstack-map/scripts/svcmap.sh
  • .claude/skills/gopherstack-parity-audit/SKILL.md
  • .claude/skills/gopherstack-sdk-shape/SKILL.md
  • .claude/skills/gopherstack-sdk-shape/scripts/sdkshape.sh
  • .claude/skills/gopherstack-service-op/SKILL.md
  • .claude/skills/gopherstack-session-close/SKILL.md
  • .claude/skills/gopherstack-tests/SKILL.md
  • .claude/skills/run-gopherstack/SKILL.md
  • .claude/skills/run-gopherstack/driver.sh
  • README.md
  • cli.go
  • cli_adapters.go
  • cli_cloudwatch_firehose_wiring_test.go
  • cli_cw_lambda_invoker_wiring_test.go
  • cli_dynamodb_kinesis_wiring_test.go
  • cli_elbv2_ec2_acm_wiring_test.go
  • cli_firehose_kinesis_wiring_test.go
  • cli_firehose_redshift_wiring_test.go
  • cli_fis_cloudwatch_stopcondition_wiring_test.go
  • cli_kinesis_lambda_esm_region_test.go
  • cli_lambda_ecr_wiring_test.go
  • cli_lambda_s3_code_wiring_test.go
  • cli_s3_sns_subject_wiring_test.go
  • cli_s3control_object_lambda_wiring_test.go
  • cli_scheduler_sagemaker_wiring_test.go
  • cli_scheduler_sqs_fifo_wiring_test.go
  • cli_sns_sqs_checker_wiring_test.go
  • cli_test.go
  • cli_textract_rekognition_s3_wiring_test.go
  • cmd/errcodeaudit/genericcodes.go
  • cmd/errcodeaudit/scan_test.go
  • cmd/errtargetaudit/classifiers.go
  • cmd/errtargetaudit/deser.go
  • cmd/errtargetaudit/dispatch.go
  • cmd/errtargetaudit/dispatch_const.go
  • cmd/errtargetaudit/dispatch_datamap.go
  • cmd/errtargetaudit/dispatch_dynamic_test.go
  • cmd/errtargetaudit/dispatch_executor.go
  • cmd/errtargetaudit/dispatch_indexassign.go
  • cmd/errtargetaudit/emit.go
  • cmd/errtargetaudit/errtargetaudit_test.go
  • cmd/errtargetaudit/genericcodes.go
  • cmd/errtargetaudit/helpers.go
  • cmd/errtargetaudit/main.go
  • cmd/errtargetaudit/pkgindex.go
  • cmd/errtargetaudit/report.go
  • cmd/errtargetaudit/scan.go
  • internal/dockercompat/api/types/container/container.go
  • internal/dockercompat/client/client.go
  • pkgs/dns/dns_test.go
  • pkgs/eventpattern/eventpattern.go
  • pkgs/eventpattern/eventpattern_test.go
  • pkgs/lockmetrics/collision_test.go
  • pkgs/lockmetrics/lockmetrics.go
  • pkgs/persistence/testdata/snapshot_inventory.json
  • services/accessanalyzer/PARITY.md
  • services/accessanalyzer/README.md
  • services/accessanalyzer/errors.go
  • services/accessanalyzer/findings.go
  • services/accessanalyzer/findings_test.go
  • services/accessanalyzer/generated_policies.go
  • services/accessanalyzer/handler.go
  • services/accessanalyzer/handler_findings.go
  • services/accessanalyzer/handler_findings_test.go
  • services/accessanalyzer/handler_generated_policies.go
  • services/accessanalyzer/handler_generated_policies_test.go
  • services/accessanalyzer/handler_policy_validation.go
  • services/accessanalyzer/handler_policy_validation_test.go
  • services/accessanalyzer/interfaces.go
  • services/accessanalyzer/policy_analysis.go
  • services/accessanalyzer/policy_analysis_test.go
  • services/acm/PARITY.md
  • services/acm/README.md
  • services/acm/acme_accounts.go
  • services/acm/acme_domain_validations.go
  • services/acm/acme_eab.go
  • services/acm/acme_endpoints.go
  • services/acm/acme_models.go
  • services/acm/certificate_lifecycle.go
  • services/acm/certificate_validation.go
  • services/acm/certificates.go
  • services/acm/certificates_test.go
  • services/acm/crypto.go
  • services/acm/errors.go
  • services/acm/export_test.go
  • services/acm/handler.go
  • services/acm/handler_acme_domain_validations.go
  • services/acm/handler_acme_eab.go
  • services/acm/handler_acme_endpoints.go
  • services/acm/handler_certificate_lifecycle_test.go
  • services/acm/handler_certificate_status_errors_test.go
  • services/acm/handler_certificates.go
  • services/acm/handler_request_certificate_invalid_parameter_test.go
  • services/acm/handler_resource_tags.go
  • services/acm/handler_tags.go
  • services/acm/handler_tags_test.go
  • services/acm/handler_test.go
  • services/acm/janitor.go
  • services/acm/janitor_test.go
  • services/acm/leak_test.go
  • services/acm/store.go
  • services/acmpca/PARITY.md
  • services/acmpca/certificate_authorities.go
  • services/acmpca/certificate_authorities_test.go
  • services/acmpca/certificates.go
  • services/acmpca/certificates_test.go
  • services/acmpca/errors.go
  • services/acmpca/handler.go
  • services/amplify/domains.go
  • services/amplify/domains_test.go
  • services/amplify/handler_domains.go
  • services/amplify/interfaces.go
  • services/amplify/jobs.go
  • services/amplify/jobs_test.go
  • services/amplify/webhooks.go
  • services/amplify/webhooks_test.go
  • services/amplify/wire_output_required_r80d_test.go
  • services/apigateway/PARITY.md
  • services/apigateway/README.md
  • services/apigateway/api_keys.go
  • services/apigateway/gateway_responses.go
  • services/apigateway/gateway_responses_test.go
  • services/apigateway/handler.go
  • services/apigateway/handler_rest_apis.go
  • services/apigateway/handler_router_test.go
  • services/apigateway/proxy.go
  • services/apigateway/proxy_aws_service_integrations_test.go
  • services/apigateway/proxy_integrations.go
  • services/apigateway/proxy_internal_test.go
  • services/apigateway/proxy_test.go
  • services/apigateway/proxy_validation.go
  • services/apigateway/proxy_validation_test.go
  • services/apigateway/rest_apis.go
  • services/apigateway/stages.go
  • services/apigateway/store.go
  • services/apigateway/store_test.go
  • services/apigateway/usage.go
  • services/apigateway/usage_plans.go
  • services/apigateway/usage_test.go
  • services/apigatewaymanagementapi/admin_test.go
  • services/apigatewaymanagementapi/ringbuffer.go
  • services/apigatewayv2/PARITY.md
  • services/apigatewayv2/README.md
  • services/apigatewayv2/apis.go
  • services/apigatewayv2/deployments.go
  • services/apigatewayv2/errors.go
  • services/apigatewayv2/handler_apis.go
  • services/apigatewayv2/handler_integration_responses_test.go
  • services/apigatewayv2/handler_integrations_test.go
  • services/apigatewayv2/http_proxy.go
  • services/apigatewayv2/http_proxy_test.go
  • services/apigatewayv2/http_proxy_throttle_test.go
  • services/apigatewayv2/integrations.go
  • services/apigatewayv2/integrations_test.go
  • services/apigatewayv2/interfaces.go
  • services/apigatewayv2/models.go
  • services/apigatewayv2/persistence.go
  • services/apigatewayv2/proxy.go
  • services/apigatewayv2/proxy_internal_test.go
  • services/apigatewayv2/routes.go
  • services/apigatewayv2/stages.go
  • services/apigatewayv2/store.go
  • services/apigatewayv2/throttle.go
  • services/appconfig/PARITY.md
  • services/appconfig/README.md
  • services/appconfigdata/configuration.go
  • services/appconfigdata/configuration_test.go
  • services/applicationautoscaling/PARITY.md
  • services/applicationautoscaling/README.md
  • services/applicationautoscaling/errors_test.go
  • services/applicationautoscaling/handler_scalable_targets.go
  • services/applicationautoscaling/handler_scalable_targets_test.go
  • services/applicationautoscaling/handler_scheduled_actions_test.go
  • services/applicationautoscaling/handler_test.go
  • services/applicationautoscaling/pagination_test.go
  • services/applicationautoscaling/persistence_test.go
  • services/applicationautoscaling/scalable_targets.go
  • services/applicationautoscaling/scaling_activities_test.go
  • services/applicationautoscaling/scheduled_actions.go
  • services/appmesh/PARITY.md
  • services/appmesh/errors.go
  • services/appmesh/handler.go
  • services/appmesh/handler_meshes.go
  • services/appmesh/handler_virtual_gateways.go
  • services/appmesh/handler_virtual_nodes.go
  • services/appmesh/handler_virtual_routers.go
  • services/appmesh/handler_virtual_services.go
  • services/appmesh/mesh_owner_test.go
  • services/appmesh/virtual_nodes.go
  • services/appmesh/virtual_nodes_test.go
  • services/apprunner/PARITY.md
  • services/apprunner/README.md
  • services/apprunner/auto_scaling_configurations.go
  • services/apprunner/connections.go
  • services/apprunner/handler_auto_scaling_configurations_test.go
  • services/apprunner/handler_connections_test.go
  • services/apprunner/handler_observability_configurations_test.go
  • services/apprunner/handler_services_test.go
  • services/apprunner/handler_vpc_connectors_test.go
  • services/apprunner/observability_configurations.go
  • services/apprunner/service_associations.go
  • services/apprunner/services.go
  • services/apprunner/vpc_connectors.go
  • services/appstream/app_blocks.go
  • services/appstream/app_blocks_test.go
  • services/appstream/fleets.go
  • services/appstream/fleets_test.go
  • services/appstream/images.go
  • services/appstream/images_test.go
  • services/appstream/users.go
  • services/appstream/users_test.go
  • services/appsync/PARITY.md
  • services/appsync/README.md
  • services/appsync/api_keys.go
  • services/appsync/api_keys_test.go
  • services/appsync/auth.go
  • services/appsync/auth_test.go
  • services/appsync/errors.go
  • services/appsync/export_test.go
  • services/appsync/graphql.go
  • services/appsync/graphql_apis.go
  • services/appsync/graphql_apis_test.go
  • services/appsync/graphql_js_pipeline_test.go
  • services/appsync/graphql_test.go
  • services/appsync/handler_api_keys_test.go
  • services/appsync/handler_errors.go
  • services/appsync/handler_errors_test.go
  • services/appsync/handler_graphql_apis.go
  • services/appsync/handler_graphql_apis_test.go
  • services/appsync/handler_schema.go
  • services/appsync/handler_schema_test.go
  • services/appsync/helpers_test.go
  • services/appsync/introspection.go
  • services/appsync/introspection_test.go
  • services/appsync/schema.go
  • services/appsync/schema_test.go
  • services/appsync/store.go
  • services/athena/PARITY.md
  • services/athena/calculations.go
  • services/athena/databases.go
  • services/athena/databases_glue_test.go
  • services/athena/ddl.go
  • services/athena/ddl_test.go
  • services/athena/handler_calculations_test.go
  • services/athena/handler_work_groups.go
  • services/athena/handler_work_groups_test.go
  • services/athena/interfaces.go
  • services/athena/prepared_exec.go
  • services/athena/prepared_exec_test.go
  • services/athena/query_executions.go
  • services/athena/result_object.go
  • services/athena/result_object_test.go
  • services/athena/store.go
  • services/athena/work_groups.go
  • services/autoscaling/PARITY.md
  • services/autoscaling/README.md
  • services/autoscaling/auto_scaling_groups.go
  • services/autoscaling/ec2_launch.go
  • services/autoscaling/elb_targets.go
  • services/autoscaling/elb_targets_test.go
  • services/autoscaling/errors.go
  • services/autoscaling/handler.go
  • services/autoscaling/handler_launch_configurations_test.go
  • services/autoscaling/handler_lifecycle_hooks_test.go
  • services/autoscaling/instance_refreshes.go
  • services/autoscaling/instance_refreshes_async_test.go
  • services/autoscaling/instances.go
  • services/autoscaling/launch_configurations.go
  • services/autoscaling/lifecycle_hooks.go
  • services/autoscaling/load_balancers.go
  • services/autoscaling/models.go
  • services/autoscaling/persistence.go
  • services/autoscaling/store.go
  • services/autoscaling/store_setup.go
  • services/awsconfig/PARITY.md
  • services/awsconfig/README.md
  • services/awsconfig/aggregators.go
  • services/awsconfig/aggregators_test.go
  • services/awsconfig/config_rules.go
  • services/awsconfig/config_rules_test.go
  • services/awsconfig/configuration_recorders.go
  • services/awsconfig/configuration_recorders_test.go
  • services/awsconfig/conformance_pack_template_test.go
  • services/awsconfig/conformance_packs.go
  • services/awsconfig/delivery_channels.go
  • services/awsconfig/delivery_channels_test.go
  • services/awsconfig/errors.go
  • services/awsconfig/errors_test.go
  • services/awsconfig/handler.go
  • services/awsconfig/handler_config_rules.go
  • services/awsconfig/handler_config_rules_test.go
  • services/awsconfig/handler_configuration_recorders_test.go
  • services/awsconfig/organization.go
  • services/awsconfig/remediation.go
  • services/awsconfig/remediation_test.go
  • services/awsconfig/retention.go
  • services/awsconfig/store.go
  • services/awsconfig/store_test.go
  • services/azureblob/PARITY.md
  • services/azureblob/README.md
  • services/azureblob/errors.go
  • services/azureblob/persistence.go
  • services/azureblob/persistence_test.go
  • services/backup/PARITY.md
  • services/backup/backup_jobs.go
  • services/backup/interfaces.go
  • services/backup/models.go
  • services/backup/persistence.go
  • services/backup/recovery_points.go
  • services/backup/recovery_points_test.go
  • services/backup/resource_arn_test.go
  • services/backup/restore_testing.go
  • services/backup/restore_testing_test.go
  • services/backup/store.go
  • services/backup/tags.go
  • services/backup/vault_policies.go
  • services/backup/vaults.go
  • services/backup/vaults_test.go
  • services/batch/export_test.go
  • services/batch/handler_job_queues_test.go
  • services/batch/handler_jobs_test.go
  • services/batch/handler_scheduling_policies_test.go
  • services/batch/handler_service_environments_test.go
  • services/batch/janitor.go
  • services/batch/janitor_test.go
  • services/batch/janitor_timeout_retry_test.go
  • services/batch/job_queues.go
  • services/batch/jobs.go
  • services/batch/models.go
  • services/batch/quota_shares.go
  • services/batch/scheduling_policies.go
  • services/batch/service_environments.go
  • services/bedrock/PARITY.md
  • services/bedrock/agent_aliases.go
  • services/bedrock/agents.go
  • services/bedrock/automated_reasoning_policies.go
  • services/bedrock/custom_models.go
  • services/bedrock/data_sources.go
  • services/bedrock/errors.go
  • services/bedrock/evaluation_jobs.go
  • services/bedrock/export_test.go
  • services/bedrock/flow_aliases.go
  • services/bedrock/flows.go
  • services/bedrock/ghost_row_jkiu_test.go
  • services/bedrock/ghost_row_kr6t_test.go
  • services/bedrock/ghost_row_wg7i_test.go
  • services/bedrock/ghost_row_y0to_test.go
  • services/bedrock/handler.go
  • services/bedrock/handler_advanced_prompt_optimization_jobs.go
  • services/bedrock/handler_agents.go
  • services/bedrock/handler_agents_test.go
  • services/bedrock/handler_automated_reasoning_policies.go
  • services/bedrock/handler_automated_reasoning_policies_test.go
  • services/bedrock/handler_custom_models.go
  • services/bedrock/handler_evaluation_jobs.go
  • services/bedrock/handler_list_maxresults_test.go
  • services/bedrock/handler_model_customization_jobs.go
  • services/bedrock/handler_model_import_jobs.go
  • services/bedrock/handler_model_invocation_jobs.go
  • services/bedrock/handler_test.go
  • services/bedrock/knowledge_bases.go
  • services/bedrock/model_customization_jobs.go
  • services/bedrock/model_import_jobs.go
  • services/bedrock/model_import_jobs_maxresults_test.go
  • services/bedrock/model_invocation_jobs.go
  • services/bedrock/models.go
  • services/bedrock/pagination_sort_totality_test.go
  • services/bedrock/prompts.go
  • services/bedrockagent/agent_version_snapshot_test.go
  • services/bedrockagent/agent_versions.go
  • services/bedrockagent/delete_version_in_use_test.go
  • services/bedrockagent/errors.go
  • services/bedrockagent/flows.go
  • services/bedrockagent/handler_agent_versions.go
  • services/bedrockagent/handler_flows.go
  • services/bedrockagent/handler_helpers.go
  • services/bedrockagent/interfaces.go
  • services/bedrockruntime/PARITY.md
  • services/bedrockruntime/README.md
  • services/bedrockruntime/async_invoke.go
  • services/bedrockruntime/handler.go
  • services/bedrockruntime/handler_async_invoke.go
  • services/bedrockruntime/handler_list_async_invokes_filters_test.go
  • services/bedrockruntime/janitor_interval_test.go
  • services/bedrockruntime/models.go
  • services/ce/cost_categories.go
  • services/ce/cost_usage.go
  • services/ce/cost_usage_wiring_test.go
  • services/ce/filter.go
  • services/ce/handler_cost_categories.go
  • services/ce/handler_cost_usage.go
  • services/ce/wire_field_fixes_test.go
  • services/cleanrooms/PARITY.md
  • services/cleanrooms/README.md
  • services/cleanrooms/delete_membership_test.go
  • services/cleanrooms/handler_collaboration_notfound_test.go
  • services/cleanrooms/memberships.go
  • services/cloudcontrol/PARITY.md
  • services/cloudcontrol/handler.go
  • services/cloudcontrol/resource_requests.go
  • services/cloudcontrol/resource_requests_test.go
  • services/cloudcontrol/resources.go
  • services/cloudcontrol/resources_test.go
  • services/cloudformation/PARITY.md
  • services/cloudformation/README.md
  • services/cloudformation/deregister_type_version_test.go
  • services/cloudformation/drift_detection.go
  • services/cloudformation/drift_detection_test.go
  • services/cloudformation/errors.go
  • services/cloudformation/handler_http_test.go
  • services/cloudformation/handler_supplemental_test.go
  • services/cloudformation/handler_type_registry.go
  • services/cloudformation/resources.go
  • services/cloudformation/resources_application_autoscaling.go
  • services/cloudformation/resources_application_autoscaling_test.go
  • services/cloudformation/resources_backup.go
  • services/cloudformation/resources_backup_selection_test.go
  • services/cloudformation/resources_dynamodb_globaltable_test.go
  • services/cloudformation/resources_dynamodb_supplemental.go
  • services/cloudformation/resources_ecs.go
  • services/cloudformation/resources_ecs_test.go
  • services/cloudformation/resources_iot.go
  • services/cloudformation/resources_neptune.go
  • services/cloudformation/resources_redshift.go
  • services/cloudformation/resources_secretsmanager.go
  • services/cloudformation/resources_secretsmanager_rotation_test.go
  • services/cloudformation/resources_secretsmanager_test.go
  • services/cloudformation/resources_supplemental_test.go
  • services/cloudformation/resources_wafv2.go
  • services/cloudformation/resources_wafv2_rulegroup_test.go
  • services/cloudformation/stack_lifecycle.go
  • services/cloudformation/stack_lifecycle_test.go
  • services/cloudformation/stack_sets.go
  • services/cloudformation/stack_sets_test.go
  • services/cloudformation/store.go
  • services/cloudformation/store_supplemental_test.go
  • services/cloudformation/type_registry.go
  • services/cloudformation/type_registry_feature_test.go
  • services/cloudfront/PARITY.md
  • services/cloudfront/distributions.go
  • services/cloudfront/distributions_transition_test.go
  • services/cloudfront/error_sentinel_fixes_test.go
  • services/cloudfront/errors.go
  • services/cloudfront/function_config_quantities_test.go
  • services/cloudfront/handler_connection.go
  • services/cloudfront/handler_dispatch.go
  • services/cloudfront/handler_functions.go
  • services/cloudfront/handler_key_value_store_test.go
  • services/cloudfront/handler_origin_request_policies_test.go
  • services/cloudfront/key_value_store.go
  • services/cloudfront/origin_request_policies.go
  • services/cloudfront/quantity_validation.go
  • services/cloudfront/reset_whitebox_test.go
  • services/cloudfront/store.go
  • services/cloudfrontkeyvaluestore/PARITY.md
  • services/cloudfrontkeyvaluestore/README.md
  • services/cloudfrontkeyvaluestore/errors.go
  • services/cloudfrontkeyvaluestore/handler.go
  • services/cloudfrontkeyvaluestore/handler_test.go
  • services/cloudtrail/PARITY.md
  • services/cloudtrail/README.md
  • services/cloudtrail/channels.go
  • services/cloudtrail/delivery.go
  • services/cloudtrail/errors.go
  • services/cloudtrail/event_data_stores.go
  • services/cloudtrail/events.go
  • services/cloudtrail/handler.go
  • services/cloudtrail/handler_event_selectors_test.go
  • services/cloudtrail/handler_resource_policies_test.go
  • services/cloudtrail/handler_trails.go
  • services/cloudtrail/handler_trails_test.go
  • services/cloudtrail/interfaces.go
  • services/cloudtrail/s3_delivery_test.go
  • services/cloudtrail/store.go
  • services/cloudtrail/trails.go
  • services/cloudwatch/PARITY.md
  • services/cloudwatch/README.md
  • services/cloudwatch/alarm_describe_family_filters_test.go
  • services/cloudwatch/alarm_eval_test.go
  • services/cloudwatch/alarm_history.go
  • services/cloudwatch/alarm_history_pagination_internal_test.go
  • services/cloudwatch/alarm_history_test.go
  • services/cloudwatch/alarm_mute_suppression_test.go
  • services/cloudwatch/alarm_state.go
  • services/cloudwatch/alarm_state_test.go
  • services/cloudwatch/alarm_subscriptions.go
  • services/cloudwatch/alarm_subscriptions_test.go
  • services/cloudwatch/alarms.go
  • services/cloudwatch/alarms_test.go
  • services/cloudwatch/composite_alarms_test.go
  • services/cloudwatch/errors.go
  • services/cloudwatch/export_test.go
  • services/cloudwatch/handler_alarm_history.go
  • services/cloudwatch/handler_alarms.go
  • services/cloudwatch/handler_metrics.go
  • services/cloudwatch/handler_metrics_test.go
  • services/cloudwatch/interfaces.go
  • services/cloudwatch/log_alarms.go
  • services/cloudwatch/persistence_test.go
  • services/cloudwatch/rpcv2cbor_alarm_history.go
  • services/cloudwatch/rpcv2cbor_alarms.go
  • services/cloudwatch/rpcv2cbor_test.go
  • services/cloudwatch/store.go
  • services/cloudwatch/store_test.go
  • services/cloudwatchlogs/deliveries.go
  • services/cloudwatchlogs/deliveries_test.go
  • services/cloudwatchlogs/errors.go
  • services/cloudwatchlogs/export.go
  • services/cloudwatchlogs/export_tasks.go
  • services/cloudwatchlogs/export_tasks_test.go
  • services/cloudwatchlogs/export_write_test.go
  • services/cloudwatchlogs/handler.go
  • services/cloudwatchlogs/handler_export_tasks.go
  • services/cloudwatchlogs/handler_export_tasks_test.go
  • services/cloudwatchlogs/interfaces.go
  • services/cloudwatchlogs/isolation_test.go
  • services/cloudwatchlogs/log_events.go
  • services/cloudwatchlogs/log_events_test.go
  • services/cloudwatchlogs/models.go
  • services/cloudwatchlogs/persistence_test.go
  • services/codeartifact/PARITY.md
  • services/codeartifact/domains.go
  • services/codeartifact/handler_domains.go
  • services/codeartifact/handler_domains_test.go
  • services/codeartifact/handler_repositories.go
  • services/codeartifact/handler_repositories_test.go
  • services/codeartifact/persistence_test.go
  • services/codeartifact/repositories.go
  • services/codeartifact/store.go
  • services/codebuild/PARITY.md
  • services/codebuild/README.md
  • services/codebuild/handler_builds.go
  • services/codebuild/janitor_test.go
  • services/codebuild/pagination_test.go
  • services/codebuild/projects.go
  • services/codecommit/PARITY.md
  • services/codecommit/commits.go
  • services/codecommit/errors.go
  • services/codecommit/files.go
  • services/codecommit/handler.go
  • services/codecommit/handler_commits_test.go
  • services/codecommit/handler_merges.go
  • services/codecommit/handler_merges_test.go
  • services/codecommit/handler_pull_request_approvals_test.go
  • services/codecommit/handler_pull_requests.go
  • services/codecommit/handler_pull_requests_test.go
  • services/codecommit/merges.go
  • services/codecommit/orphan_code_sentinel_fixes_test.go
  • services/codecommit/persistence_test.go
  • services/codecommit/pull_requests.go
  • services/codeconnections/PARITY.md
  • services/codeconnections/README.md
  • services/codeconnections/connections_test.go
  • services/codeconnections/handler_connections.go
  • services/codeconnections/hosts.go
  • services/codeconnections/hosts_list_test.go
  • services/codeconnections/repository_links.go
  • services/codeconnections/repository_links_test.go
  • services/codedeploy/PARITY.md
  • services/codedeploy/applications.go
  • services/codedeploy/cross_service_test.go
  • services/codedeploy/deployment_configs.go
  • services/codedeploy/deployment_configs_test.go
  • services/codedeploy/deployment_group_tag_filters_test.go
  • services/codedeploy/deployment_groups.go
  • services/codedeploy/deployment_groups_test.go
  • services/codedeploy/deployment_instances.go
  • services/codedeploy/deployment_instances_test.go
  • services/codedeploy/deployments.go
  • services/codedeploy/deployments_test.go
  • services/codedeploy/errors.go
  • services/codedeploy/handler.go
  • services/codedeploy/handler_deployment_instances.go
  • services/codedeploy/handler_deployments.go
  • services/codedeploy/models.go
  • services/codedeploy/on_premises_instances.go
  • services/codedeploy/on_premises_instances_test.go
  • services/codedeploy/store.go
  • services/codepipeline/PARITY.md
  • services/codepipeline/README.md
  • services/codepipeline/action_engine.go
  • services/codepipeline/action_engine_cross_service_test.go
  • services/codepipeline/custom_action_types.go
  • services/codepipeline/errors.go
  • services/codepipeline/handler.go
  • services/codepipeline/handler_test.go
  • services/codepipeline/handler_third_party_jobs.go
  • services/codepipeline/interfaces.go
  • services/codepipeline/jobs.go
  • services/codepipeline/jobs_failure_wire_test.go
  • services/codepipeline/jobs_test.go
  • services/codepipeline/models.go
  • services/codepipeline/persistence_test.go
  • services/codepipeline/pipeline_state.go
  • services/codepipeline/pipeline_state_test.go
  • services/codepipeline/pipelines.go
  • services/codepipeline/store.go
  • services/codepipeline/third_party_job_client_token_test.go
  • services/codepipeline/third_party_jobs.go
  • services/codepipeline/third_party_jobs_test.go
  • services/codestarconnections/PARITY.md
  • services/codestarconnections/README.md
  • services/codestarconnections/connections.go
  • services/codestarconnections/handler_connections_edgecases_test.go
  • services/codestarconnections/handler_hosts_edgecases_test.go
  • services/codestarconnections/handler_repository_links_test.go
  • services/codestarconnections/hosts.go
  • services/codestarconnections/repository_links.go
  • services/cognitoidentity/PARITY.md
  • services/cognitoidentity/identity_pool_roles.go
  • services/cognitoidentity/identity_pools.go
  • services/cognitoidentity/identity_pools_test.go
  • services/cognitoidp/PARITY.md
  • services/cognitoidp/attributes.go
  • services/cognitoidp/attributes_management_test.go
  • services/cognitoidp/attributes_test.go
  • services/cognitoidp/auth.go
  • services/cognitoidp/auth_test.go
  • services/cognitoidp/domains.go
  • services/cognitoidp/domains_test.go
  • services/cognitoidp/export_test.go
  • services/cognitoidp/handler_test.go
  • services/cognitoidp/janitor.go
  • services/cognitoidp/janitor_test.go
  • services/cognitoidp/models_users.go
  • services/cognitoidp/persistence.go
  • services/cognitoidp/store.go
  • services/cognitoidp/user_migration.go
  • services/cognitoidp/user_pool_replicas.go
  • services/cognitoidp/user_pools.go
  • services/cognitoidp/user_pools_test.go
  • services/cognitoidp/users.go
  • services/cognitoidp/users_test.go
  • services/comprehend/PARITY.md
  • services/comprehend/export_test.go
  • services/comprehend/filter_test.go
  • services/comprehend/handler_resources_test.go
  • services/comprehend/handler_test.go
  • services/comprehend/presence_validation_test.go
  • services/comprehend/store.go
  • services/comprehend/store_test.go
  • services/databrew/PARITY.md
  • services/databrew/datasets.go
  • services/databrew/datasets_test.go
  • services/databrew/errors.go
  • services/databrew/handler.go
  • services/databrew/handler_jobs.go
  • services/databrew/jobs.go
  • services/databrew/models.go
  • services/databrew/projects.go
  • services/databrew/projects_test.go
  • services/databrew/recipes.go
  • services/databrew/recipes_test.go
  • services/databrew/rulesets.go
  • services/databrew/rulesets_test.go
  • services/databrew/schedules.go
  • services/databrew/schedules_test.go
  • services/datasync/handler_tasks.go
  • services/datasync/interfaces.go
  • services/datasync/models.go
  • services/datasync/persistence_test.go
  • services/datasync/tags.go
  • services/datasync/tasks.go
  • services/datasync/wire_field_fixes_test.go
  • services/dax/PARITY.md
  • services/dax/README.md
  • services/dax/clusters.go
  • services/dax/clusters_test.go
  • services/dax/handler_test.go
  • services/dax/subnet_groups.go
  • services/dax/subnet_groups_test.go
  • services/detective/handler_investigations_test.go
  • services/detective/investigations.go
  • services/detective/investigations_test.go
  • services/directconnect/PARITY.md
  • services/directconnect/README.md
  • services/directconnect/connections.go
  • services/directconnect/lags.go
  • services/directconnect/lags_test.go
  • services/directconnect/sdk_roundtrip_test.go
  • services/directoryservice/client_auth.go
  • services/directoryservice/errors.go
  • services/directoryservice/handler.go
  • services/directoryservice/handler_client_auth_test.go
  • services/directoryservice/handler_ldaps_test.go
  • services/directoryservice/handler_radius_test.go
  • services/directoryservice/handler_snapshots_test.go
  • services/directoryservice/ldaps.go
  • services/directoryservice/radius.go
  • services/directoryservice/snapshots.go
  • services/dlm/handler.go
  • services/dlm/handler_lifecycle_policies_test.go
  • services/dlm/interfaces.go
  • services/dlm/lifecycle_policies.go
  • services/dlm/lifecycle_policies_test.go
  • services/dlm/models.go
  • services/dms/PARITY.md
  • services/dms/README.md
  • services/dms/assessment_runs.go
  • services/dms/data_providers.go
  • services/dms/endpoints.go
  • services/dms/export_test.go
  • services/dms/handler_assessment_runs.go
  • services/dms/handler_assessment_runs_test.go
  • services/dms/handler_data_providers_test.go
  • services/dms/handler_endpoints_test.go
  • services/dms/handler_instance_profiles_test.go
  • services/dms/handler_replication_configs_test.go
  • services/dms/instance_profiles.go
  • services/dms/replication_configs.go
  • services/docdb/PARITY.md
  • services/docdb/README.md
  • services/docdb/db_cluster_snapshots.go
  • services/docdb/events.go
  • services/docdb/global_clusters.go
  • services/docdb/handler_db_cluster_snapshots_test.go
  • services/docdb/handler_events_test.go
  • services/docdb/handler_global_clusters_test.go
  • services/docdb/store.go
  • services/dynamodb/delete_table_cleanup_test.go
  • services/dynamodb/eav_wire_guard.go
  • services/dynamodb/eav_wire_guard_test.go
  • services/dynamodb/fis_test.go
  • services/dynamodb/global_tables.go
  • services/dynamodb/handler.go
  • services/dynamodb/janitor.go
  • services/dynamodb/janitor_activatetimer_internal_test.go
  • services/dynamodb/replication.go
  • services/dynamodb/streams_ops.go
  • services/dynamodb/streams_ops_test.go
  • services/dynamodb/table_ops.go
  • services/dynamodb/table_ops_wire_test.go
  • services/dynamodb/table_status_test.go
  • services/dynamodb/ttl_sweep_test.go
  • services/dynamodb/whitebox_test.go
  • services/ec2/PARITY.md
  • services/ec2/cleanup_test.go
  • services/ec2/ec2core.go
  • services/ec2/elastic_ips.go
  • services/ec2/elastic_ips_test.go
  • services/ec2/ghost_rows_test.go
  • services/ec2/handler.go
  • services/ec2/handler_filters.go
  • services/ec2/handler_instances_lifecycle.go
  • services/ec2/handler_route_tables.go
  • services/ec2/iam_instance_profile_lifecycle_test.go
  • services/ec2/images.go
  • services/ec2/instances.go
  • services/ec2/internet_gateways.go
  • services/ec2/internet_gateways_test.go
  • services/ec2/janitor.go
  • services/ec2/main_route_table_test.go
  • services/ec2/network_acls.go
  • services/ec2/network_acls_test.go
  • services/ec2/network_interfaces.go
  • services/ec2/persistence.go
  • services/ec2/reset_leak_internal_test.go
  • services/ec2/route_tables.go
  • services/ec2/run_instances_security_group_names_test.go
  • services/ec2/security_groups.go
  • services/ec2/security_groups_test.go
  • services/ec2/snapshots.go
  • services/ec2/store.go
  • services/ec2/store_setup.go
  • services/ec2/subnets.go
  • services/ec2/vpc_endpoints.go
  • services/ec2/vpc_endpoints_test.go
  • services/ec2/vpcs.go
  • services/ec2/wire_field_fixes_ec2sweep44_test.go
  • services/ecr/PARITY.md
  • services/ecr/errors.go
  • services/ecr/export_test.go
  • services/ecr/handler.go
  • services/ecr/handler_internal_error_test.go
  • services/ecr/handler_repositories.go
  • services/ecr/images.go
  • services/ecr/images_test.go
  • services/ecr/interfaces.go
  • services/ecr/interfaces_test.go
  • services/ecr/layers_test.go
  • services/ecr/lifecycle_policy.go
  • services/ecr/lifecycle_policy_test.go
  • services/ecr/repositories.go
  • services/ecr/repositories_test.go
  • services/ecr/repository_creation_templates.go
  • services/ecr/repository_creation_templates_test.go
  • services/ecr/store.go
  • services/ecr/store_test.go
  • services/ecs/PARITY.md
  • services/ecs/README.md
  • services/ecs/capacity_providers.go
  • services/ecs/clusters.go
  • services/ecs/clusters_internal_test.go
  • services/ecs/docker_runner.go
  • services/ecs/docker_runner_internal_test.go
  • services/ecs/errors.go
  • services/ecs/handler_capacity_providers_test.go
  • services/ecs/handler_clusters_test.go
  • services/ecs/handler_services.go
  • services/ecs/handler_services_deployments_test.go
  • services/ecs/handler_services_test.go
  • services/ecs/interfaces.go
  • services/ecs/janitor.go
  • services/ecs/janitor_test.go
  • services/ecs/lifecycle_internal_test.go
  • services/ecs/logs.go
  • services/ecs/logs_internal_test.go
  • services/ecs/provider.go
  • services/ecs/purge_leak_internal_test.go
  • services/ecs/service_index_test.go
  • services/ecs/services.go
  • services/ecs/store.go
  • services/ecs/store_setup.go
  • services/ecs/task_containers.go
  • services/ecs/tasks.go
  • services/efs/PARITY.md
  • services/efs/README.md
  • services/efs/access_points.go
  • services/efs/access_points_test.go
  • services/efs/account_preferences.go
  • services/efs/backup_policy.go
  • services/efs/backup_policy_test.go
  • services/efs/crossservice.go
  • services/efs/crossservice_test.go
  • services/efs/errors.go
  • services/efs/file_system_policy.go
  • services/efs/file_system_policy_test.go
  • services/efs/file_systems.go
  • services/efs/file_systems_test.go
  • services/efs/handler.go
  • services/efs/handler_account_preferences_test.go
  • services/efs/handler_replication_test.go
  • services/efs/lifecycle_config.go
  • services/efs/lifecycle_config_test.go
  • services/efs/mount_target_ip_address_type_test.go
  • services/efs/mount_targets.go
  • services/efs/mount_targets_test.go
  • services/efs/replication.go
  • services/efs/replication_test.go
  • services/efs/store.go
  • services/efs/store_test.go
  • services/efs/tags.go
  • services/efs/tags_test.go
  • services/eks/PARITY.md
  • services/eks/addon_namespace_test.go
  • services/eks/addon_pod_identity_test.go
  • services/eks/addons.go
  • services/eks/addons_test.go
  • services/eks/clusters.go
  • services/eks/clusters_test.go
  • services/eks/handler.go
  • services/eks/handler_addons.go
  • services/eks/handler_pod_identity.go
  • services/eks/handler_updates.go
  • services/eks/models.go
  • services/eks/node_groups.go
  • services/eks/node_groups_test.go
  • services/eks/persistence_test.go
  • services/eks/store_test.go
  • services/eks/tags_test.go
  • services/eks/updates.go
  • services/eks/updates_test.go
  • services/elasticache/PARITY.md
  • services/elasticache/README.md
  • services/elasticache/cache_clusters.go
  • services/elasticache/cache_clusters_test.go
  • services/elasticache/errors.go
  • services/elasticache/handler_cache_clusters.go
  • services/elasticache/handler_cache_clusters_test.go
  • services/elasticache/handler_subnet_groups.go
  • services/elasticache/handler_users.go
  • services/elasticache/handler_users_test.go
  • services/elasticache/models.go
  • services/elasticache/subnet_groups.go
  • services/elasticache/subnet_groups_test.go
  • services/elasticache/user_groups.go
  • services/elasticache/user_groups_test.go
  • services/elasticache/users.go
  • services/elasticache/users_test.go
  • services/elasticbeanstalk/application_versions.go
  • services/elasticbeanstalk/application_versions_test.go
  • services/elasticbeanstalk/applications.go
  • services/elasticbeanstalk/applications_test.go
  • services/elasticbeanstalk/environments.go
  • services/elasticbeanstalk/environments_test.go
  • services/elasticbeanstalk/handler_applications.go
  • services/elasticbeanstalk/handler_applications_test.go
  • services/elasticbeanstalk/isolation_test.go
  • services/elasticsearch/PARITY.md
  • services/elasticsearch/domain_lifecycle.go
  • services/elasticsearch/domains.go
  • services/elasticsearch/errors.go
  • services/elasticsearch/handler.go
  • services/elasticsearch/handler_domain_lifecycle.go
  • services/elasticsearch/handler_domain_lifecycle_test.go
  • services/elasticsearch/handler_packages.go
  • services/elasticsearch/handler_packages_test.go
  • services/elasticsearch/handler_reserved_instances_test.go
  • services/elasticsearch/handler_tags.go
  • services/elasticsearch/handler_tags_test.go
  • services/elasticsearch/handler_vpc_endpoints_test.go
  • services/elasticsearch/packages.go
  • services/elasticsearch/persistence_test.go
  • services/elasticsearch/reserved_instances.go
  • services/elb/PARITY.md
  • services/elb/attributes.go
  • services/elb/attributes_test.go
  • services/elb/crossservice.go
  • services/elb/crossservice_test.go
  • services/elb/handler_attributes.go
  • services/elb/instances.go
  • services/elb/interfaces.go
  • services/elb/load_balancers.go
  • services/elb/load_balancers_test.go
  • services/elb/models.go
  • services/elb/policies.go
  • services/elb/policies_test.go
  • services/elbv2/PARITY.md
  • services/elbv2/README.md
  • services/elbv2/crossservice.go
  • services/elbv2/crossservice_test.go
  • services/elbv2/errors.go
  • services/elbv2/handler.go
  • services/elbv2/listener_certificates.go
  • services/elbv2/listeners.go
  • services/elbv2/load_balancers.go
  • services/elbv2/store.go
  • services/elbv2/tags_test.go
  • services/elbv2/target_groups.go
  • services/elbv2/target_groups_test.go
  • services/emr/PARITY.md
  • services/emr/README.md
  • services/emr/cluster_settings.go
  • services/emr/clusters.go
  • services/emr/errors.go
  • services/emr/handler_cluster_settings_test.go
  • services/emr/handler_clusters_test.go
  • services/emr/handler_steps_test.go
  • services/emr/janitor.go
  • services/emr/janitor_internal_test.go
  • services/emr/models.go
  • services/emr/steps.go
  • services/emrserverless/PARITY.md
  • services/emrserverless/README.md
  • services/emrserverless/applications.go
  • services/emrserverless/applications_test.go
  • services/emrserverless/errors.go
  • services/emrserverless/handler.go
  • services/emrserverless/handler_applications_test.go
  • services/emrserverless/handler_sessions_test.go
  • services/emrserverless/job_runs.go
  • services/emrserverless/job_runs_test.go
  • services/emrserverless/session.go
  • services/eventbridge/PARITY.md
  • services/eventbridge/README.md
  • services/eventbridge/delivery.go
  • services/eventbridge/delivery_api_destination.go
  • services/eventbridge/delivery_api_destination_test.go
  • services/eventbridge/delivery_bus_dlq_test.go
  • services/eventbridge/delivery_event_bus_test.go
  • services/eventbridge/errtargetaudit_resource_limit_test.go
  • services/eventbridge/event_buses.go
  • services/eventbridge/export_test.go
  • services/eventbridge/handler_dispatch.go
  • services/eventbridge/handler_test.go
  • services/eventbridge/pattern.go
  • services/eventbridge/pattern_test.go
  • services/eventbridge/replays.go
  • services/eventbridge/replays_test.go
  • services/eventbridge/rules.go
  • services/eventbridge/rules_test.go
  • services/eventbridge/store.go
  • services/eventbridge/store_test.go
  • services/firehose/PARITY.md
  • services/firehose/README.md
  • services/firehose/delivery_streams.go
  • services/firehose/export_test.go
  • services/firehose/flush.go
  • services/firehose/flush_test.go
  • services/firehose/handler_delivery_streams.go
  • services/firehose/handler_delivery_streams_test.go
  • services/firehose/interfaces.go
  • services/firehose/kinesis_source_test.go
  • services/firehose/models.go
  • services/firehose/store.go
  • services/fis/PARITY.md
  • services/fis/README.md
  • services/fis/experiment_selection_mode_test.go
  • services/fis/experiment_templates.go
  • services/fis/experiment_templates_validation_test.go
  • services/fis/experiments.go
  • services/fis/export_test.go
  • services/fis/handler.go
  • services/fis/interfaces.go
  • services/fis/stop_condition_alarm_test.go
  • services/fis/store.go
  • services/forecast/PARITY.md
  • services/forecast/errors.go
  • services/forecast/handler.go
  • services/forecast/store.go
  • services/forecast/store_test.go
  • services/forecast/tags.go
  • services/forecast/tags_test.go
  • services/fsx/cascade_delete_test.go
  • services/fsx/data_repository_tasks.go
  • services/fsx/errors.go
  • services/fsx/file_cache_wire_test.go
  • services/fsx/file_caches.go
  • services/fsx/file_systems.go
  • services/fsx/handler.go
  • services/fsx/handler_create_tags_test.go
  • services/fsx/handler_data_repository_tasks_test.go
  • services/fsx/handler_file_caches_test.go
  • services/fsx/handler_test.go
  • services/fsx/interfaces.go
  • services/fsx/storage_virtual_machines.go
  • services/glacier/PARITY.md
  • services/glacier/archives.go
  • services/glacier/archives_test.go
  • services/glacier/export_test.go
  • services/glacier/handler_multipart_uploads.go
  • services/glacier/handler_multipart_uploads_test.go
  • services/glacier/handler_vaults.go
  • services/glacier/handler_vaults_test.go
  • services/glacier/interfaces.go
  • services/glacier/jobs.go
  • services/glacier/models.go
  • services/glacier/multipart_uploads.go
  • services/glacier/multipart_uploads_test.go
  • services/glacier/oldshape_restore_test.go
  • services/glacier/persistence.go
  • services/glacier/persistence_test.go
  • services/glacier/sdk_vault_lock_enforcement_test.go
  • services/glacier/store.go
  • services/glacier/store_test.go
  • services/glacier/vaults.go
  • services/glacier/whitebox_test.go
  • services/glacier/writesince_writesites_test.go
  • services/glue/PARITY.md
  • services/glue/databases.go
  • services/glue/databases_test.go
  • services/glue/export_test.go
  • services/glue/get_partitions_bench_test.go
  • services/glue/get_partitions_index_test.go
  • services/glue/jobrun_timeout_test.go
  • services/glue/jobs.go
  • services/glue/lifecycle_advance_test.go
  • services/glue/partitions.go
  • services/glue/partitions_test.go
  • services/glue/reconciler.go
  • services/glue/reconciler_test.go
  • services/glue/store.go
  • services/glue/store_setup.go
  • services/grafana/PARITY.md
  • services/grafana/service_accounts.go
  • services/grafana/service_accounts_test.go
  • services/grafana/versions.go
  • services/guardduty/detectors.go
  • services/guardduty/detectors_test.go
  • services/guardduty/filters.go
  • services/guardduty/finding_criteria.go
  • services/guardduty/findings.go
  • services/guardduty/findings_test.go
  • services/guardduty/handler_ip_and_threatintel_sets.go
  • services/guardduty/handler_ip_and_threatintel_sets_test.go
  • services/guardduty/members.go
  • services/guardduty/members_test.go
  • services/iam/account.go
  • services/iam/account_test.go
  • services/iam/comprehensive_lock_test.go
  • services/iam/enforcer_test.go
  • services/iam/evaluator.go
  • services/iam/evaluator_bench_test.go
  • services/iam/evaluator_cache_test.go
  • services/iam/handler_mfa.go
  • services/iam/mfa.go
  • services/iam/mfa_test.go
  • services/iam/middleware.go
  • services/iam/middleware_test.go
  • services/iam/models_mfa.go
  • services/iam/models_providers.go
  • services/iam/permissions_boundary_simulation_parity_test.go
  • services/iam/persistence.go
  • services/iam/policies.go
  • services/iam/providers.go
  • services/iam/simulate_custom_policy_boundary_test.go
  • services/iam/simulation.go
  • services/iam/store.go
  • services/iam/store_test.go
  • services/iam/users.go
  • services/identitystore/handler.go
  • services/identitystore/handler_users_test.go
  • services/inspector2/PARITY.md
  • services/inspector2/README.md
  • services/inspector2/code_security.go
  • services/inspector2/filters.go
  • services/inspector2/filters_suppression_test.go
  • services/inspector2/findings.go
  • services/inspector2/findings_aggregation_test.go
  • services/inspector2/handler.go
  • services/inspector2/handler_coverage_reporting.go
  • services/inspector2/wire_field_fixes_or9_test.go
  • services/iot/PARITY.md
  • services/iot/README.md
  • services/iot/audit.go
  • services/iot/authorizers.go
  • services/iot/billing_groups.go
  • services/iot/certificates.go
  • services/iot/commands.go
  • services/iot/handler.go
  • services/iot/handler_billing_groups.go
  • services/iot/handler_billing_groups_test.go
  • services/iot/handler_helpers.go
  • services/iot/handler_metrics.go
  • services/iot/handler_metrics_test.go
  • services/iot/handler_policies_test.go
  • services/iot/handler_security_profiles.go
  • services/iot/handler_security_profiles_test.go
  • services/iot/handler_thing_groups.go
  • services/iot/handler_thing_groups_test.go
  • services/iot/interfaces.go
  • services/iot/jobs.go
  • services/iot/metrics.go
  • services/iot/ota_updates.go
  • services/iot/packages.go
  • services/iot/policies.go
  • services/iot/provisioning.go
  • services/iot/security_profiles.go
  • services/iot/store.go
  • services/iot/store_setup.go
  • services/iot/store_test.go
  • services/iot/streams.go
  • services/iot/tags_delete_cleanup_test.go
  • services/iot/thing_group_reverse_index_test.go
  • services/iot/thing_groups.go
  • services/iot/thing_types.go
  • services/iot/things_test.go
  • services/iot/topic_rules.go
  • services/iotanalytics/PARITY.md
  • services/iotanalytics/README.md
  • services/iotanalytics/handler_pipelines_test.go
  • services/iotanalytics/handler_tags_test.go
  • services/iotanalytics/handler_test.go
  • services/iotanalytics/persistence_test.go
  • services/iotanalytics/pipelines.go
  • services/iotanalytics/pipelines_test.go
  • services/iotanalytics/store.go
  • services/iotanalytics/store_test.go
  • services/iotanalytics/wire_field_fixes_test.go
  • services/iotanalytics/wire_shape_sdk_roundtrip_test.go
  • services/iotdataplane/PARITY.md
  • services/iotdataplane/README.md
  • services/iotdataplane/connections_test.go
  • services/iotdataplane/handler.go
  • services/iotdataplane/handler_connections.go
  • services/iotdataplane/handler_retained_messages.go
  • services/iotdataplane/handler_shadows.go
  • services/iotwireless/PARITY.md
  • services/iotwireless/destinations.go
  • services/iotwireless/destinations_test.go
  • services/iotwireless/errors.go
  • services/iotwireless/handler.go
  • services/iotwireless/multicast_groups.go
  • services/iotwireless/multicast_groups_test.go
  • services/iotwireless/positioning_leak_test.go
  • services/iotwireless/profiles.go
  • services/iotwireless/profiles_test.go
  • services/iotwireless/wireless_devices.go
  • services/iotwireless/wireless_gateways.go
  • services/kafka/clusters.go
  • services/kafka/clusters_test.go
  • services/kafka/handler_clusters.go
  • services/kafka/handler_clusters_shapes_test.go
  • services/kinesis/PARITY.md
  • services/kinesis/handler_monitoring.go
  • services/kinesis/janitor_test.go
  • services/kinesis/models.go
  • services/kinesis/monitoring.go
  • services/kinesis/monitoring_test.go
  • services/kinesis/records.go
  • services/kinesis/shard_iterators_test.go
  • services/kinesis/store.go
  • services/kinesis/store_test.go
  • services/kinesis/streams.go
  • services/kinesisanalytics/PARITY.md
  • services/kinesisanalytics/application_update.go
  • services/kinesisanalytics/application_update_test.go
  • services/kinesisanalyticsv2/PARITY.md
  • services/kinesisanalyticsv2/README.md
  • services/kinesisanalyticsv2/application_snapshots.go
  • services/kinesisanalyticsv2/whitebox_test.go
  • services/kms/PARITY.md
  • services/kms/README.md
  • services/kms/alias_arn_cache_test.go
  • services/kms/aliases.go
  • services/kms/aliases_test.go
  • services/kms/crypto.go
  • services/kms/custom_key_store_link_test.go
  • services/kms/custom_key_stores.go
  • services/kms/custom_key_stores_test.go
  • services/kms/data_keys.go
  • services/kms/data_keys_test.go
  • services/kms/describe_key_grant_tokens_test.go
  • services/kms/encryption.go
  • services/kms/errors.go
  • services/kms/errtarget_findings_test.go
  • services/kms/export_test.go
  • services/kms/get_key_last_usage_test.go
  • services/kms/grants.go
  • services/kms/grants_test.go
  • services/kms/handler.go
  • services/kms/handler_generate_and_mac_test.go
  • services/kms/handler_grants_policies.go
  • services/kms/handler_grants_policies_test.go
  • services/kms/handler_keys_test.go
  • services/kms/handler_replication_maintenance_test.go
  • services/kms/handler_tags.go
  • services/kms/hmac.go
  • services/kms/hmac_test.go
  • services/kms/import.go
  • services/kms/import_error_wiring_test.go
  • services/kms/import_test.go
  • services/kms/janitor.go
  • services/kms/key_agreement.go
  • services/kms/key_policies.go
  • services/kms/key_policies_test.go
  • services/kms/keys.go
  • services/kms/keys_test.go
  • services/kms/leak_test.go
  • services/kms/mac_algorithm_wiring_test.go
  • services/kms/models.go
  • services/kms/replication.go
  • services/kms/replication_test.go
  • services/kms/rotation.go
  • services/kms/signing.go
  • services/kms/signing_internal_test.go
  • services/kms/store.go
  • services/kms/wire_error_types_test.go
  • services/lakeformation/PARITY.md
  • services/lakeformation/lf_tags.go
  • services/lakeformation/lf_tags_test.go
  • services/lakeformation/store.go
  • services/lakeformation/store_test.go
  • services/lambda/PARITY.md
  • services/lambda/README.md
  • services/lambda/async_invoke_test.go
  • services/lambda/code_signing_test.go
  • services/lambda/container_cleanup_test.go
  • services/lambda/containers.go
  • services/lambda/crossservice.go
  • services/lambda/delete_function_cleanup_test.go
  • services/lambda/ecr_resolver_test.go
  • services/lambda/event_source_poller.go
  • services/lambda/export_test.go
  • services/lambda/functions.go
  • services/lambda/handler_functions.go
  • services/lambda/invocation.go
  • services/lambda/lifecycle.go
  • services/lambda/store.go
  • services/lightsail/PARITY.md
  • services/lightsail/attach_delete_semantics_test.go
  • services/lightsail/bucket_delete_force_test.go
  • services/lightsail/buckets.go
  • services/lightsail/certificates_distributions.go
  • services/lightsail/disks.go
  • services/lightsail/handler_instances.go
  • services/lightsail/instance_restart_ip_test.go
  • services/lightsail/instances.go
  • services/lightsail/keypairs_staticips.go
  • services/lightsail/loadbalancers.go
  • services/lightsail/models.go
  • services/lightsail/sdk_roundtrip_network_test.go
  • services/macie2/PARITY.md
  • services/macie2/allow_lists.go
  • services/macie2/classification_jobs.go
  • services/macie2/enablement.go
  • services/macie2/errors.go
  • services/macie2/findings.go
  • services/macie2/findings_filters.go
  • services/macie2/handler_classification_jobs.go
  • services/macie2/handler_classification_jobs_test.go
  • services/macie2/handler_enablement_test.go
  • services/macie2/list_filter_params_test.go
  • services/macie2/store.go
  • services/macie2/tag_leak_test.go
  • services/managedblockchain/PARITY.md
  • services/managedblockchain/README.md
  • services/managedblockchain/export_test.go
  • services/managedblockchain/members.go
  • services/managedblockchain/members_test.go
  • services/managedblockchain/networks.go
  • services/managedblockchain/proposals.go
  • services/managedblockchain/proposals_voting_test.go
  • services/mediaconvert/PARITY.md
  • services/mediaconvert/README.md
  • services/mediaconvert/handler_queues.go
  • services/mediaconvert/handler_resource_shares.go
  • services/mediaconvert/interfaces.go
  • services/mediaconvert/janitor.go
  • services/mediaconvert/janitor_test.go
  • services/mediaconvert/models.go
  • services/mediaconvert/persistence_test.go
  • services/mediaconvert/queues.go
  • services/mediaconvert/queues_test.go
  • services/mediaconvert/resource_shares.go
  • services/mediaconvert/resource_shares_test.go
  • services/mediaconvert/wire_last_share_details_test.go
  • services/medialive/PARITY.md
  • services/medialive/batch.go
  • services/medialive/channels.go
  • services/medialive/export_test.go
  • services/medialive/handler_batch_test.go
  • services/medialive/handler_channels_test.go
  • services/medialive/handler_inputs.go
  • services/medialive/handler_inputs_test.go
  • services/medialive/handler_networks_test.go
  • services/medialive/handler_reservations.go
  • services/medialive/handler_reservations_test.go
  • services/medialive/handler_sdi_sources_test.go
  • services/medialive/inputs.go
  • services/medialive/interfaces.go
  • services/medialive/models.go
  • services/medialive/networks.go
  • services/medialive/persistence_test.go
  • services/medialive/reservations.go
  • services/medialive/sdi_sources.go
  • services/medialive/store.go
  • services/mediapackage/PARITY.md
  • services/mediapackage/channels.go
  • services/mediapackage/channels_test.go
  • services/mediapackage/handler_tags_test.go
  • services/mediapackage/origin_endpoints.go
  • services/mediapackage/tags.go
  • services/mediastore/containers.go
  • services/mediastore/containers_test.go
  • services/mediastoredata/PARITY.md
  • services/mediastoredata/README.md
  • services/mediastoredata/errors.go
  • services/mediastoredata/handler.go
  • services/mediastoredata/handler_test.go
  • services/mediastoredata/objects.go
  • services/mediastoredata/objects_test.go
  • services/mediatailor/channels.go
  • services/mediatailor/handler_logs_test.go
  • services/mediatailor/playback_configurations.go
  • services/mediatailor/store.go
  • services/memorydb/PARITY.md
  • services/memorydb/clusters.go
  • services/memorydb/errcode_test.go
  • services/memorydb/errors.go
  • services/memorydb/handler.go
  • services/memorydb/handler_users_test.go
  • services/memorydb/parameter_groups.go
  • services/memorydb/users.go
  • services/mgn/PARITY.md
  • services/mgn/sourceserver_lifecycle_precondition_test.go
  • services/mgn/sourceservers.go
  • services/mq/broker_fields_test.go
  • services/mq/brokers.go
  • services/mwaa/PARITY.md
  • services/mwaa/README.md
  • services/mwaa/handler_metrics.go
  • services/mwaa/handler_metrics_test.go
  • services/neptune/PARITY.md
  • services/neptune/README.md
  • services/neptune/cluster_endpoints.go
  • services/neptune/cluster_parameter_groups.go
  • services/neptune/db_clusters.go
  • services/neptune/db_instances.go
  • services/neptune/deletion_protection_roundtrip_test.go
  • services/neptune/errors.go
  • services/neptune/event_subscriptions.go
  • services/neptune/ghost_tags_delete_test.go
  • services/neptune/global_clusters.go
  • services/neptune/handler.go
  • services/neptune/handler_cluster_parameter_groups_test.go
  • services/neptune/handler_db_instances.go
  • services/neptune/handler_db_instances_test.go
  • services/neptune/handler_parameter_groups_test.go
  • services/neptune/handler_subnet_groups_test.go
  • services/neptune/models.go
  • services/neptune/parameter_groups.go
  • services/neptune/subnet_groups.go
  • services/networkmanager/PARITY.md
  • services/networkmanager/README.md
  • services/networkmanager/associations.go
  • services/networkmanager/crossservice.go
  • services/networkmanager/deregister_transit_gateway_cascade_test.go
  • services/networkmanager/globalnetworks.go
  • services/networkmanager/precondition_test.go
  • services/networkmonitor/PARITY.md
  • services/networkmonitor/handler_create_tags_test.go
  • services/networkmonitor/monitors.go
  • services/networkmonitor/persistence.go
  • services/networkmonitor/persistence_test.go
  • services/networkmonitor/store.go
  • services/networkmonitor/store_setup.go
  • services/omics/PARITY.md
  • services/omics/README.md
  • services/omics/delete_precondition_test.go
  • services/omics/reference_stores.go
  • services/omics/runs.go
  • services/omics/sequence_stores.go
  • services/opensearch/access_policy.go
  • services/opensearch/access_policy_test.go
  • services/opensearch/documents.go
  • services/opensearch/domains_test.go
  • services/opensearch/errors.go
  • services/opensearch/handler_indices.go
  • services/opensearch/handler_packages.go
  • services/opensearch/handler_packages_test.go
  • services/opensearch/lifecycle.go
  • services/opensearch/packages.go
  • services/opsworks/PARITY.md
  • services/opsworks/instances.go
  • services/opsworks/instances_test.go
  • services/opsworks/layers.go
  • services/opsworks/layers_test.go
  • services/opsworks/stacks.go
  • services/opsworks/stacks_test.go
  • services/organizations/PARITY.md
  • services/organizations/accounts.go
  • services/organizations/accounts_test.go
  • services/organizations/arn.go
  • services/organizations/default_policy_test.go
  • services/organizations/effective_policy_test.go
  • services/organizations/errors.go
  • services/organizations/handler.go
  • services/organizations/handshakes.go
  • services/organizations/handshakes_test.go
  • services/organizations/organization.go
  • services/organizations/organization_test.go
  • services/organizations/organizational_units.go
  • services/organizations/organizational_units_test.go
  • services/organizations/pagination_sort_totality_test.go
  • services/organizations/policies.go
  • services/organizations/policies_test.go
  • services/organizations/policy_attachments_test.go
  • services/organizations/store_test.go
  • services/organizations/tags_test.go
  • services/outposts/PARITY.md
  • services/outposts/README.md
  • services/outposts/capacity_ledger_delete_cleanup_test.go
  • services/outposts/export_test.go
  • services/outposts/list_snapshot_race_test.go
  • services/outposts/outposts.go
  • services/outposts/renewal_idempotency_delete_cleanup_test.go
  • services/outposts/sites.go
  • services/personalize/PARITY.md
  • services/personalize/campaigns.go
  • services/personalize/dataset_groups.go
  • services/personalize/handler_campaigns_test.go
  • services/personalize/handler_dataset_groups.go
  • services/personalize/handler_dataset_groups_test.go
  • services/personalize/handler_schemas_test.go
  • services/personalize/handler_solutions_test.go
  • services/personalize/schemas.go
  • services/personalize/solutions.go
  • services/personalize/store.go
  • services/personalize/whitebox_test.go
  • services/pinpoint/PARITY.md
  • services/pinpoint/README.md
  • services/pinpoint/campaigns.go
  • services/pinpoint/export_test.go
  • services/pinpoint/handler.go
  • services/pinpoint/handler_applications_settings.go
  • services/pinpoint/handler_apps.go
  • services/pinpoint/handler_attributes.go
  • services/pinpoint/handler_campaigns.go
  • services/pinpoint/handler_channels.go
  • services/pinpoint/handler_endpoints.go
  • services/pinpoint/handler_event_streams.go
  • services/pinpoint/handler_events.go
  • services/pinpoint/handler_export_import_jobs.go
  • services/pinpoint/handler_journeys.go
  • services/pinpoint/handler_messages.go
  • services/pinpoint/handler_recommender_configurations.go
  • services/pinpoint/handler_templates.go
  • services/pinpoint/journeys.go
  • services/pinpoint/leak_test.go
  • services/pinpoint/payload_size.go
  • services/pinpoint/payload_size_test.go
  • services/pipes/PARITY.md
  • services/pipes/export_test.go
  • services/pipes/filter.go
  • services/pipes/filter_test.go
  • services/pipes/filter_validation.go
  • services/pipes/filter_validation_test.go
  • services/pipes/pipe_lifecycle.go
  • services/pipes/pipe_lifecycle_test.go
  • services/pipes/pipes.go
  • services/pipes/sorted_pipe_names_whitebox_test.go
  • services/pipes/sources.go
  • services/pipes/sources_brokers_test.go
  • services/pipes/sources_required_fields_test.go
  • services/pipes/sources_test.go
  • services/pipes/targets.go
  • services/pipes/targets_ecs_batch_test.go
  • services/pipes/targets_required_fields_test.go
  • services/pipes/targets_test.go
  • services/polly/PARITY.md
  • services/polly/README.md
  • services/polly/handler.go
  • services/polly/speech.go
  • services/polly/speech_synthesis_tasks.go
  • services/polly/speech_synthesis_tasks_test.go
  • services/polly/speech_test.go
  • services/quicksight/PARITY.md
  • services/quicksight/dashboard.go
  • services/quicksight/dataset.go
  • services/quicksight/handler_custompermissions_test.go
  • services/quicksight/handler_dashboard.go
  • services/quicksight/handler_dashboard_test.go
  • services/quicksight/handler_sdk_roundtrip_test.go
  • services/quicksight/handler_user.go
  • services/quicksight/interfaces.go
  • services/quicksight/models.go
  • services/quicksight/store_roundtrip_test.go
  • services/quicksight/types.go
  • services/quicksight/user.go
  • services/ram/PARITY.md
  • services/ram/resource_shares.go
  • services/ram/resource_shares_test.go
  • services/ram/resources.go
  • services/ram/share_associations_test.go
  • services/ram/share_invitations.go
  • services/ram/share_invitations_lifecycle_test.go
  • services/ram/store.go
  • services/rds/PARITY.md
  • services/rds/README.md
  • services/rds/activity_stream.go
  • services/rds/activity_stream_test.go
  • services/rds/automated_backups.go
  • services/rds/automated_backups_test.go
  • services/rds/cluster_endpoints.go
  • services/rds/cluster_endpoints_test.go
  • services/rds/cluster_snapshots.go
  • services/rds/cluster_snapshots_test.go
  • services/rds/data_api.go
  • services/rds/data_api_test.go
  • services/rds/db_clusters.go
  • services/rds/db_clusters_failover_overlay_test.go
  • services/rds/db_clusters_operations_test.go
  • services/rds/db_clusters_test.go
  • services/rds/db_instances.go
  • services/rds/db_instances_operations_test.go
  • services/rds/dispatch_test.go
  • services/rds/engine_versions.go
  • services/rds/engine_versions_test.go
  • services/rds/error_codes_test.go
  • services/rds/errors.go
  • services/rds/export_test.go
  • services/rds/form_actions_cluster_test.go
  • services/rds/handler_db_clusters.go
  • services/rds/handler_db_instances.go
  • services/rds/handler_dispatch.go
  • services/rds/lifecycle.go
  • services/rds/maintenance.go
  • services/rds/maintenance_test.go
  • services/rds/models.go
  • services/rds/persistence.go
  • services/rds/persistence_test.go
  • services/rds/reset_test.go
  • services/rds/security_groups.go
  • services/rds/security_groups_test.go
  • services/rds/subnet_groups.go
  • services/rds/subnet_groups_test.go
  • services/rdsdata/PARITY.md
  • services/rdsdata/README.md
  • services/rdsdata/export_test.go
  • services/rdsdata/handler.go
  • services/rdsdata/janitor.go
  • services/rdsdata/janitor_test.go
  • services/rdsdata/models.go
  • services/rdsdata/persistence.go
  • services/rdsdata/persistence_test.go
  • services/rdsdata/provider.go
  • services/rdsdata/statements.go
  • services/rdsdata/transactions.go
  • services/redshift/PARITY.md
  • services/redshift/cluster_mgmt.go
  • services/redshift/errors.go
  • services/redshift/events.go
  • services/redshift/handler.go
  • services/redshift/handler_cluster_mgmt.go
  • services/redshift/handler_cluster_tagkeys_test.go
  • services/redshift/handler_cluster_test.go
  • services/redshift/handler_credentials_test.go
  • services/redshift/handler_endpoint_authorization_test.go
  • services/redshift/handler_events_test.go
  • services/redshift/handler_lakehouse_test.go
  • services/redshift/handler_modify_cluster_gaps_test.go
  • services/redshift/handler_namespace_registration_sdk_test.go
  • services/redshift/handler_param_groups_test.go
  • services/redshift/handler_partners_test.go
  • services/redshift/handler_resize_test.go
  • services/redshift/handler_scheduled_actions.go
  • services/redshift/handler_scheduled_actions_test.go
  • services/redshift/handler_sdk_roundtrip_test.go
  • services/redshift/handler_security_groups.go
  • services/redshift/handler_security_groups_test.go
  • services/redshift/handler_snapshots.go
  • services/redshift/handler_snapshots_sorting_test.go
  • services/redshift/handler_snapshots_test.go
  • services/redshift/handler_subnet_groups.go
  • services/redshift/handler_subnet_security_groups_gaps_test.go
  • services/redshift/handler_tags.go
  • services/redshift/interfaces.go
  • services/redshift/models.go
  • services/redshift/param_groups.go
  • services/redshift/persistence_test.go
  • services/redshift/reconciler.go
  • services/redshift/reconciler_test.go
  • services/redshift/security_groups.go
  • services/redshift/snapshot_access_test.go
  • services/redshift/snapshots.go
  • services/redshift/store.go
  • services/redshift/store_test.go
  • services/redshift/subnet_groups.go
  • services/redshift/wire_field_fixes_test.go
  • services/redshiftdata/PARITY.md
  • services/redshiftdata/README.md
  • services/redshiftdata/handler_statements.go
  • services/redshiftdata/handler_statements_lifecycle_test.go
  • services/redshiftdata/handler_statements_semantics_test.go
  • services/redshiftdata/handler_statements_test.go
  • services/redshiftdata/handler_statements_validation_test.go
  • services/redshiftdata/idempotency_test.go
  • services/redshiftdata/isolation_test.go
  • services/redshiftdata/models.go
  • services/redshiftdata/statements.go
  • services/rekognition/PARITY.md
  • services/rekognition/README.md
  • services/rekognition/datasets.go
  • services/rekognition/errors.go
  • services/rekognition/handler.go
  • services/rekognition/handler_celebrities.go
  • services/rekognition/handler_custom_labels.go
  • services/rekognition/handler_datasets_test.go
  • services/rekognition/handler_faces.go
  • services/rekognition/handler_faces_test.go
  • services/rekognition/handler_labels.go
  • services/rekognition/handler_media_analysis.go
  • services/rekognition/handler_moderation.go
  • services/rekognition/handler_moderation_test.go
  • services/rekognition/handler_project_versions_test.go
  • services/rekognition/handler_projects_test.go
  • services/rekognition/handler_text_detection.go
  • services/rekognition/handler_users.go
  • services/rekognition/interfaces.go
  • services/rekognition/project_versions.go
  • services/rekognition/projects.go
  • services/rekognition/s3_object_test.go
  • services/rekognition/store.go
  • services/resiliencehub/PARITY.md
  • services/resiliencehub/appversions.go
  • services/resiliencehub/appversions_test.go
  • services/resiliencehub/assessments.go
  • services/resiliencehub/assessments_test.go
  • services/resourcegroups/PARITY.md
  • services/resourcegroups/groups.go
  • services/resourcegroups/groups_test.go
  • services/resourcegroups/handler_resources_test.go
  • services/resourcegroups/handler_test.go
  • services/resourcegroups/resources.go
  • services/resourcegroups/store.go
  • services/resourcegroups/tagsync.go
  • services/resourcegroups/tagsync_test.go
  • services/resourcegroupstaggingapi/persistence.go
  • services/resourcegroupstaggingapi/persistence_test.go
  • services/rolesanywhere/PARITY.md
  • services/rolesanywhere/README.md
  • services/rolesanywhere/handler.go
  • services/rolesanywhere/handler_pagination_restart_test.go
  • services/rolesanywhere/handler_profiles_test.go
  • services/rolesanywhere/handler_test.go
  • services/rolesanywhere/handler_trust_anchors_test.go
  • services/rolesanywhere/tags.go
  • services/rolesanywhere/tags_test.go
  • services/route53/PARITY.md
  • services/route53/dns_registrar_resync_test.go
  • services/route53/error_path_sweep_test.go
  • services/route53/hosted_zones.go
  • services/route53/hosted_zones_test.go
  • services/route53/record_sets.go
  • services/route53/record_sets_routing_test.go
  • services/route53resolver/PARITY.md
  • services/route53resolver/error_target_fixes_test.go
  • services/route53resolver/firewall_rule_groups.go
  • services/route53resolver/handler.go
  • services/route53resolver/policy_leak_test.go
  • services/route53resolver/query_log_associations.go
  • services/route53resolver/query_log_configs.go
  • services/route53resolver/resolver_rules.go
  • services/route53resolver/rule_associations.go
  • services/s3/bucket_notification_test.go
  • services/s3/notification.go
  • services/s3/notification_dispatch_test.go
  • services/s3/post_object.go
  • services/s3control/PARITY.md
  • services/s3control/README.md
  • services/s3control/access_grants.go
  • services/s3control/bucket.go
  • services/s3control/export_test.go
  • services/s3control/handler_access_grants_test.go
  • services/s3control/handler_bucket_test.go
  • services/s3control/handler_dispatch_test.go
  • services/s3control/handler_jobs_test.go
  • services/s3control/handler_multi_region_access_points_test.go
  • services/s3control/jobs.go
  • services/s3control/multi_region_access_points.go
  • services/s3control/object_lambda.go
  • services/s3control/store.go
  • services/s3tables/PARITY.md
  • services/s3tables/README.md
  • services/s3tables/errors.go
  • services/s3tables/handler_tables.go
  • services/s3tables/interfaces.go
  • services/s3tables/namespaces.go
  • services/s3tables/namespaces_test.go
  • services/s3tables/persistence_test.go
  • services/s3tables/store_setup.go
  • services/s3tables/table_buckets.go
  • services/s3tables/table_buckets_test.go
  • services/s3tables/tables.go
  • services/s3tables/tables_test.go
  • services/sagemaker/PARITY.md
  • services/sagemaker/README.md
  • services/sagemaker/endpoint_configs.go
  • services/sagemaker/endpoint_inference_component_transition_test.go
  • services/sagemaker/endpoints.go
  • services/sagemaker/experiments.go
  • services/sagemaker/handler_compilation_jobs_test.go
  • services/sagemaker/handler_edge_packaging_jobs_test.go
  • services/sagemaker/handler_endpoint_configs_test.go
  • services/sagemaker/handler_endpoints_test.go
  • services/sagemaker/handler_experiments_test.go
  • services/sagemaker/handler_hp_tuning_jobs_test.go
  • services/sagemaker/handler_inference_components_test.go
  • services/sagemaker/handler_inference_recommendations_jobs_test.go
  • services/sagemaker/handler_labeling_test.go
  • services/sagemaker/handler_notebook_instances_test.go
  • services/sagemaker/handler_training_jobs_test.go
  • services/sagemaker/handler_transform_jobs_test.go
  • services/sagemaker/handler_trial_components_test.go
  • services/sagemaker/hp_tuning_jobs.go
  • services/sagemaker/inference_components.go
  • services/sagemaker/lifecycle.go
  • services/sagemaker/lifecycle_test.go
  • services/sagemaker/notebook_instances.go
  • services/sagemaker/pipeline_execution_start_test.go
  • services/sagemaker/pipeline_executions.go
  • services/sagemaker/pipelines.go
  • services/sagemaker/training_jobs.go
  • services/sagemaker/transform_jobs.go
  • services/sagemaker/trial_components.go
  • services/sagemakerruntime/PARITY.md
  • services/sagemakerruntime/README.md
  • services/sagemakerruntime/endpoint_validation_test.go
  • services/sagemakerruntime/handler.go
  • services/sagemakerruntime/invoke_endpoint_async_test.go
  • services/scheduler/PARITY.md
  • services/scheduler/handler_schedule_groups.go
  • services/scheduler/interfaces.go
  • services/scheduler/isolation_test.go
  • services/scheduler/models.go
  • services/scheduler/persistence.go
  • services/scheduler/persistence_roundtrip_test.go
  • services/scheduler/persistence_test.go
  • services/scheduler/runner_test.go
  • services/scheduler/schedule_groups.go
  • services/scheduler/schedule_groups_test.go
  • services/scheduler/schedules.go
  • services/scheduler/schedules_list_test.go
  • services/scheduler/schedules_test.go
  • services/scheduler/store_test.go
  • services/scheduler/tags_test.go
  • services/secretsmanager/PARITY.md
  • services/secretsmanager/createsecret_test.go
  • services/secretsmanager/deletesecret_test.go
  • services/secretsmanager/errors.go
  • services/secretsmanager/export_test.go
  • services/secretsmanager/handler.go
  • services/secretsmanager/helpers_test.go
  • services/secretsmanager/models.go
  • services/secretsmanager/persistence.go
  • services/secretsmanager/replica_write_guard_test.go
  • services/secretsmanager/replication.go
  • services/secretsmanager/replication_test.go
  • services/secretsmanager/rotation.go
  • services/secretsmanager/secret_versions.go
  • services/secretsmanager/secrets.go
  • services/secretsmanager/store_conversion_test.go
  • services/securityhub/PARITY.md
  • services/securityhub/automation_rules.go
  • services/securityhub/automation_rules_test.go
  • services/securityhub/errors.go
  • services/securityhub/findings.go
  • services/securityhub/handler_hub.go
  • services/securityhub/hub.go
  • services/securityhub/hub_test.go
  • services/securityhub/insights.go
  • services/securityhub/insights_test.go
  • services/serverlessrepo/PARITY.md
  • services/serverlessrepo/application_versions.go
  • services/serverlessrepo/cloud_formation.go
  • services/serverlessrepo/handler_application_versions_test.go
  • services/serverlessrepo/handler_cloud_formation_test.go
  • services/servicediscovery/PARITY.md
  • services/servicediscovery/README.md
  • services/servicediscovery/dns_registrar_test.go
  • services/servicediscovery/handler_services.go
  • services/servicediscovery/instances.go
  • services/servicediscovery/interfaces.go
  • services/servicediscovery/models.go
  • services/servicediscovery/namespaces.go
  • services/servicediscovery/services.go
  • services/servicediscovery/services_test.go
  • services/servicediscovery/store.go
  • services/servicediscovery/store_test.go
  • services/servicediscovery/tags.go
  • services/servicediscovery/tags_test.go
  • services/ses/PARITY.md
  • services/ses/README.md
  • services/ses/email_sending.go
  • services/ses/errors.go
  • services/ses/handler.go
  • services/ses/identities.go
  • services/ses/identities_test.go
  • services/ses/interfaces.go
  • services/ses/notifications.go
  • services/ses/notifications_test.go
  • services/ses/persistence_test.go
  • services/ses/receipt_rules.go
  • services/ses/receipt_rules_test.go
  • services/ses/store.go
  • services/ses/undeclared_delete_errors_test.go
  • services/sesv2/PARITY.md
  • services/sesv2/configuration_sets.go
  • services/sesv2/configuration_sets_test.go
  • services/sesv2/contact_lists.go
  • services/sesv2/dedicated_ip_pools.go
  • services/sesv2/email_identities.go
  • services/sesv2/email_identities_test.go
  • services/sesv2/email_templates.go
  • services/sesv2/handler_send_email.go
  • services/sesv2/interfaces.go
  • services/sesv2/persistence_test.go
  • services/sesv2/send_email.go
  • services/sesv2/send_email_test.go
  • services/sesv2/tenants.go
  • services/sesv2/whitebox_test.go
  • services/shield/PARITY.md
  • services/shield/errors_test.go
  • services/shield/handler_attacks.go
  • services/shield/handler_subscription.go
  • services/shield/handler_subscription_test.go
  • services/shield/protection_groups.go
  • services/shield/quotas_test.go
  • services/shield/subscription.go
  • services/shield/subscription_test.go
  • services/shield/tags.go
  • services/sns/PARITY.md
  • services/sns/concurrent_wiring_test.go
  • services/sns/handler_errors.go
  • services/sns/lambda_firehose_delivery.go
  • services/sns/publish.go
  • services/sns/sms_test.go
  • services/sqs/PARITY.md
  • services/sqs/dead_letter.go
  • services/sqs/dead_letter_test.go
  • services/sqs/errors.go
  • services/sqs/handler.go
  • services/sqs/handler_message_visibility_test.go
  • services/sqs/handler_test.go
  • services/sqs/message_move_tasks_test.go
  • services/sqs/store.go
  • services/ssm/PARITY.md
  • services/ssm/README.md
  • services/ssm/associations.go
  • services/ssm/documents.go
  • services/ssm/errors.go
  • services/ssm/export_test.go
  • services/ssm/handler.go
  • services/ssm/handler_create_tags_test.go
  • services/ssm/handler_test.go
  • services/ssm/maintenance_window.go
  • services/ssm/maintenance_window_test.go
  • services/ssm/misc_resource_tags_leak_test.go
  • services/ssm/models_patch_baselines.go
  • services/ssm/ops_items.go
  • services/ssm/parameter_labels_test.go
  • services/ssm/parameters.go
  • services/ssm/parameters_handler_test.go
  • services/ssm/parameters_test.go
  • services/ssm/patch_baseline_approval_rules_test.go
  • services/ssm/patch_baselines.go
  • services/ssm/patch_baselines_test.go
  • services/ssm/patch_inventory.go
  • services/ssm/reset_test.go
  • services/ssm/store.go
  • services/ssoadmin/PARITY.md
  • services/ssoadmin/README.md
  • services/ssoadmin/instances.go
  • services/ssoadmin/instances_cascade_delete_internal_test.go
  • services/stepfunctions/PARITY.md
  • services/stepfunctions/activities.go
  • services/stepfunctions/aliases_test.go
  • services/stepfunctions/asl/executor.go
  • services/stepfunctions/asl/service_integration_ecs_glue_eb_test.go
  • services/stepfunctions/asl/service_integration_test.go
  • services/stepfunctions/asl/sync_pattern_wait_test.go
  • services/stepfunctions/errors.go
  • services/stepfunctions/errtargetaudit_invalid_routing_config_test.go
  • services/stepfunctions/execution_history.go
  • services/stepfunctions/execution_history_test.go
  • services/stepfunctions/executions.go
  • services/stepfunctions/export_test.go
  • services/stepfunctions/handler.go
  • services/stepfunctions/integrations.go
  • services/stepfunctions/leak_test.go
  • services/stepfunctions/qualified_arn.go
  • services/stepfunctions/qualified_arn_test.go
  • services/stepfunctions/state_machine_versions.go
  • services/stepfunctions/state_machine_versions_test.go
  • services/stepfunctions/store.go
  • services/sts/PARITY.md
  • services/sts/assume_role.go
  • services/sts/assume_role_test.go
  • services/sts/assume_root.go
  • services/sts/assume_root_test.go
  • services/sts/authorization_message_test.go
  • services/sts/caller_identity.go
  • services/sts/caller_identity_test.go
  • services/sts/delegated_access_test.go
  • services/sts/federation_test.go
  • services/sts/handler.go
  • services/sts/janitor_test.go
  • services/sts/models.go
  • services/sts/persistence_test.go
  • services/sts/saml.go
  • services/sts/saml_test.go
  • services/sts/session_tokens_test.go
  • services/sts/store.go
  • services/sts/store_test.go
  • services/sts/web_identity.go
  • services/sts/web_identity_test.go
  • services/support/attachments.go
  • services/support/cases.go
  • services/support/cases_test.go
  • services/support/handler_cases.go
  • services/support/whitebox_test.go
  • services/swf/activity_types.go
  • services/swf/activity_types_test.go
  • services/swf/domains.go
  • services/swf/domains_test.go
  • services/swf/errors.go
  • services/swf/handler_activity_types_test.go
  • services/swf/handler_test.go
  • services/swf/handler_workflow_types_test.go
  • services/swf/workflow_executions.go
  • services/swf/workflow_executions_test.go
  • services/swf/workflow_types.go
  • services/swf/workflow_types_test.go
  • services/textract/PARITY.md
  • services/textract/adapters.go
  • services/textract/errors.go
  • services/textract/handler.go
  • services/textract/handler_adapter_versions.go
  • services/textract/handler_adapter_versions_test.go
  • services/textract/handler_adapters.go
  • services/textract/handler_adapters_test.go
  • services/textract/handler_analyze_document_config_test.go
  • services/textract/handler_document_analysis.go
  • services/textract/handler_document_detection.go
  • services/textract/handler_expense_analysis.go
  • services/textract/handler_id_analysis.go
  • services/textract/handler_lending_analysis.go
  • services/textract/handler_tags_test.go
  • services/textract/interfaces.go
  • services/textract/s3_object_test.go
  • services/textract/store.go
  • services/timestreamquery/handler_create_tags_test.go
  • services/timestreamquery/handler_scheduled_queries.go
  • services/timestreamquery/scheduled_queries.go
  • services/timestreamquery/scheduled_queries_test.go
  • services/timestreamquery/store.go
  • services/timestreamwrite/PARITY.md
  • services/timestreamwrite/batch_load_tasks.go
  • services/timestreamwrite/handler_records.go
  • services/timestreamwrite/handler_records_test.go
  • services/timestreamwrite/handler_test.go
  • services/timestreamwrite/persistence_test.go
  • services/timestreamwrite/records.go
  • services/timestreamwrite/records_test.go
  • services/timestreamwrite/wire_sdk_roundtrip_test.go
  • services/transcribe/PARITY.md
  • services/transcribe/README.md
  • services/transcribe/call_analytics.go
  • services/transcribe/call_analytics_test.go
  • services/transcribe/handler_test.go
  • services/transcribe/language_models.go
  • services/transcribe/language_models_test.go
  • services/transcribe/medical_scribe.go
  • services/transcribe/medical_scribe_test.go
  • services/transcribe/medical_transcription_jobs.go
  • services/transcribe/medical_transcription_jobs_test.go
  • services/transcribe/persistence_test.go
  • services/transcribe/tags_test.go
  • services/transcribe/transcription_jobs.go
  • services/transcribe/transcription_jobs_test.go
  • services/transcribe/wire_field_fixes_g8k9_test.go
  • services/transcribe/wire_field_fixes_test.go
  • services/transfer/PARITY.md
  • services/transfer/agreements.go
  • services/transfer/certificates.go
  • services/transfer/connectors.go
  • services/transfer/delete_tags_test.go
  • services/transfer/host_keys.go
  • services/transfer/profiles.go
  • services/transfer/servers.go
  • services/transfer/users.go
  • services/transfer/users_test.go
  • services/transfer/web_apps.go
  • services/transfer/workflows.go
  • services/translate/PARITY.md
  • services/translate/README.md
  • services/translate/errors.go
  • services/translate/handler.go
  • services/translate/handler_parallel_data_test.go
  • services/translate/handler_text_translation_jobs_test.go
  • services/translate/parallel_data.go
  • services/translate/text_translation_jobs.go
  • services/verifiedpermissions/errors.go
  • services/verifiedpermissions/handler.go
  • services/verifiedpermissions/handler_policies.go
  • services/verifiedpermissions/handler_policies_test.go
  • services/verifiedpermissions/handler_policy_stores.go
  • services/verifiedpermissions/handler_policy_stores_test.go
  • services/verifiedpermissions/models.go
  • services/verifiedpermissions/policies.go
  • services/verifiedpermissions/policies_test.go
  • services/verifiedpermissions/policy_stores.go
  • services/verifiedpermissions/policy_stores_test.go
  • services/vpclattice/handler_rules_test.go
  • services/vpclattice/handler_target_groups.go
  • services/vpclattice/handler_target_groups_test.go
  • services/vpclattice/interfaces.go
  • services/vpclattice/rules.go
  • services/vpclattice/target_groups.go
  • services/waf/PARITY.md
  • services/waf/README.md
  • services/waf/byte_match_sets_test.go
  • services/waf/change_token_test.go
  • services/waf/change_tokens.go
  • services/waf/errors.go
  • services/waf/geo_match_sets_test.go
  • services/waf/handler.go
  • services/waf/ip_sets.go
  • services/waf/ip_sets_test.go
  • services/waf/match_sets.go
  • services/waf/persistence.go
  • services/waf/persistence_test.go
  • services/waf/rate_based_rules.go
  • services/waf/rate_based_rules_test.go
  • services/waf/regex_match_sets_test.go
  • services/waf/regex_pattern_sets_test.go
  • services/waf/rule_groups.go
  • services/waf/rule_groups_test.go
  • services/waf/rules.go
  • services/waf/rules_test.go
  • services/waf/set_updates.go
  • services/waf/size_constraint_sets_test.go
  • services/waf/sql_injection_match_sets_test.go
  • services/waf/store.go
  • services/waf/tag_leak_test.go
  • services/waf/web_acls.go
  • services/waf/web_acls_test.go
  • services/waf/xss_match_sets_test.go
  • services/wafv2/handler.go
  • services/wafv2/handler_ip_sets.go
  • services/wafv2/handler_ip_sets_test.go
  • services/wafv2/handler_regex_pattern_sets.go
  • services/wafv2/handler_regex_pattern_sets_test.go
  • services/wafv2/handler_rule_groups.go
  • services/wafv2/handler_rule_groups_test.go
  • services/wafv2/handler_test.go
  • services/wafv2/handler_web_acls.go
  • services/wafv2/handler_web_acls_test.go
  • services/workmail/PARITY.md
  • services/workmail/README.md
  • services/workmail/access_control.go
  • services/workmail/aliases.go
  • services/workmail/error_codes_test.go
  • services/workmail/handler_access_control_test.go
  • services/workmail/handler_aliases_test.go
  • services/workmail/handler_mail_domains_test.go
  • services/workmail/handler_mobile_device_access_test.go
  • services/workmail/mail_domains.go
  • services/workmail/mobile_device_access.go
  • services/workmail/persistence_test.go
  • services/workmail/users.go
  • services/workspaces/PARITY.md
  • services/workspaces/application_associations_test.go
  • services/workspaces/bundles.go
  • services/workspaces/bundles_test.go
  • services/workspaces/connection_aliases.go
  • services/workspaces/connection_aliases_test.go
  • services/workspaces/directories_test.go
  • services/workspaces/errors.go
  • services/workspaces/export_test.go
  • services/workspaces/handler_test.go
  • services/workspaces/images.go
  • services/workspaces/images_test.go
  • services/workspaces/ip_groups.go
  • services/workspaces/ip_groups_test.go
  • services/workspaces/workspaces.go
  • services/workspaces/workspaces_lifecycle_test.go
  • services/workspaces/workspaces_test.go
  • services/workspaces/workspaces_validation_test.go
  • services/xray/PARITY.md
  • services/xray/groups.go
  • services/xray/groups_test.go
  • services/xray/handler_sampling_rules.go
  • services/xray/handler_sampling_rules_test.go
  • services/xray/handler_trace_segment_destination.go
  • services/xray/handler_trace_segment_destination_test.go
  • services/xray/sampling_rules.go
  • services/xray/sampling_rules_test.go
  • test/integration/appsync_test.go
  • test/integration/batch_test.go
  • test/integration/cloudformation_ext_test.go
  • test/integration/ecs_test.go
  • test/integration/elbv2_audit_test.go
  • test/integration/elbv2_test.go
  • test/integration/iotanalytics_test.go

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Witness Patrol and others added 28 commits September 6, 2026 20:27
UpdateResource's RFC 6902 engine covered add, replace and remove. move, copy
and test were parsed and then silently skipped, so a patch containing them
returned 200 with the document unchanged -- the client had no way to tell its
patch had not been applied.

All three now work, per RFC 6902:
- move (4.4): remove at From, add the value at Path. Rejects From being a
  proper prefix of Path, since "a location cannot be moved into one of its
  children".
- copy (4.5): add a deep copy of From's value at Path, leaving From intact.
- test (4.6): succeeds only on JSON structural equality -- object member order
  insignificant, array order significant, 1 and 1.0 equal (both decode to
  float64 and re-marshal identically).

Patches are atomic: ops apply sequentially against the document as mutated by
prior ops, and any failure returns the ORIGINAL document string alongside the
error, so UpdateResource assigns r.Properties only after the whole patch
succeeds. add/replace/remove keep their pre-existing best-effort behavior --
an unresolvable Path is still a silent no-op for those three, never an error.

A failed test (and an unresolvable move/copy From) maps to ErrValidation ->
InvalidRequestException. The SDK declares no TestOperationFailedException and
no ValidationException for cloudcontrol; InvalidRequestException's own doc
comment reads "The resource handler has returned that invalid input from the
user has generated a generic exception" (cloudcontrol@v1.32.4
types/errors.go), and it is already this file's mapping for every other
malformed-request condition. Every *Fault-suffixed error describes a
downstream handler failure during provisioning, not a client patch rejected
before any handler runs. High confidence on internal consistency, moderate on
exact real-AWS wire behavior -- the SDK has no dedicated code either way.

Regression tests: 7 functions covering move (including array-index shift),
copy, deep-copy independence, test pass/fail, and whole-patch abort. All fail
against the unmodified engine except TestOp_Passes, which cannot distinguish
"test evaluated and passed" from "test silently skipped" -- TestOp_Fails and
TestOp_Fails_AbortsWholePatch carry that proof.

The deep-copy test initially passed with deepCopyJSON removed entirely, because
Properties is a JSON string and the round-trip destroys aliasing between calls.
Rewritten to do the copy and the mutating replace in one patch document at
nesting depth 2, which is the only way aliasing is observable. It now fails
both when deepCopyJSON is dropped at the call site and when its map branch is
made shallow.

Closes: gopherstack-j6lv

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Generated by cmd/gendocs, not hand-edited. CI's docs job runs make docs then
git diff --exit-code, so this had to land before the branch could pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…rincipal

isExternalPrincipal treated every principal that was not a bare 12-digit
account ID as external, so a same-account IAM role or user ARN was misjudged.
Two consequences: AssociateResourceShare wrongly rejected such a principal
when AllowExternalPrincipals was false, and when it was allowed the backend
fabricated a pending invitation to the caller's own account.

AllowExternalPrincipals gates OTHER ACCOUNTS, not IAM identities inside this
one -- "Specifies whether principals outside your organization in
Organizations can be associated with a resource share" (ram@v1.39.4
api_op_CreateResourceShare.go). AssociateResourceShare's own Principals doc
lists "An ARN of an IAM role, for example: iam::123456789012:role/rolename"
and the IAM user equivalent as valid principal forms.

Now an ARN whose service segment is iam is external only when its account
segment differs from this backend's account. Organization and OU ARNs stay
unconditionally external even when their account segment matches, since an
org/OU principal can admit arbitrary other member accounts -- that carve-out
has its own regression subtest so a later simplification cannot quietly widen
the exemption.

On the issue as filed: the premise is confirmed. Nothing outside services/ram
consults a resource share before granting access -- the only importers are
cli.go, cli_test.go, dashboard/ui.go and internal/teststack, all registration
boilerplate, and cli.go's wireTaggingRAM reads only ResourceShare.Tags for
GetResources, never an association. No enforcement hook was built, and that is
deliberate: every real RAM use case is cross-account, and this backend cannot
represent one. CreateResourceShare unconditionally sets OwningAccountID to
b.accountID (resource_shares.go:53), which makes listSharedWithMe dead code by
construction. services/mq, services/managedblockchain and services/ce each
already document the same single-account limitation independently. Gating the
one same-account principal kind would mean routing through
iam.EnforcementMiddleware in front of all ~150 services -- far beyond this
issue. Recorded in PARITY.md rather than faked.

Verified by neutering the iam-ARN branch (resource_shares.go:279), still
compiling: the two same-account subtests and
TestAllowExternalPrincipals_FalseAllowsSameAccountIAMPrincipal fail, while the
organization-ARN and other-account subtests keep passing.

Blast radius: this is an authorization check, so the full go test ./services/...
was run -- no failures. No pre-existing test was modified.

Closes: gopherstack-q91e

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…t filters

matchesJSONPattern compared only top-level pattern fields, so the common
real-world shape -- {"dynamodb":{"NewImage":{"id":{"S":["1"]}}}} -- could never
match past its first key. filter.go documented this as future work, and the
issue's premise is confirmed.

A pattern field's value is now either a nested object, which recurses a level
into the event, or an array of exact-match values and content-filter objects.
Fields at one level are ANDed, array entries for one field are ORed, per AWS's
eb-event-patterns-content-based-filtering.html. The SDK carries no grammar of
its own -- pipes@v1.26.4 types.go declares Filter.Pattern as a bare *string --
which is why the EventBridge docs are the source, cited in both the code and
PARITY.md.

Added numeric and cidr; prefix, suffix, anything-but and exists already
existed. Unsupported operators (wildcard, equals-ignore-case, $or) and any
unrecognized matcher object fail CLOSED rather than matching everything, which
is the safer direction for a filter and is pinned by its own test.

Exact matching is now type-sensitive: the old code fell back to comparing a
quote-stripped raw value against the rule string, so pattern "5" matched event
5. EventBridge does not do that, and the old path would also have panicked
under == on a decoded array or object. Now compared with reflect.DeepEqual on
decoded values. No pre-existing test covered the lenient behavior, so nothing
had to change -- but it is a deliberate behavior change, and neither it nor the
DeepEqual non-comparable guard has a dedicated test. Filed as follow-up.

services/eventbridge/pattern.go already has a nested matcher, but every
function in it is unexported and pipes is a separate package, so this pass
extended pipes' own json.RawMessage matcher rather than opening up
eventbridge's. numeric and cidr were ported algorithmically from it to stay
semantically aligned. Two matchers in one repo is a real duplication cost;
consolidating into a shared package is filed as follow-up rather than done
here, since it reaches files outside this issue's scope.

Verified by neutering, both still compiling: isJSONObject (filter.go:103)
forced false fails the three nested subtests plus every pre-existing operator
subtest, confirming it is load-bearing throughout; the fail-closed fallthrough
(filter.go:245) turned to true fails exactly
unrecognized_matcher_object_never_matches and nothing else.

Regression test TestFilter_NestedPatterns, 14 subtests. No pre-existing test
was modified beyond one comment line.

Closes: gopherstack-a2vk

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ipes follow-ups

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
… as unrepresentable

gopherstack-vsmv: DeleteOutpost cleaned up runningInstances but left every
renewalIdempotency entry for the deleted Outpost in place for the life of the
process. Now pruned.

The prune is safe rather than merely low-risk. Entries are keyed
o.ID + "::" + ClientToken (renewals.go:60), so a prefix match on o.ID is exact
and needs no extra index. More importantly there is no premature-eviction
window: CreateRenewal calls resolveOutpostLocked BEFORE consulting the cache
(renewals.go:71-77), so once the Outpost is gone a retried request fails at
notFoundError and can never reach renewalIdempotency. The pruned entries were
already unreachable, making this memory hygiene, not a behavior change.

Orders and Quotes are deliberately NOT pruned, matching the pre-existing
DeleteOutpost behavior -- they are historical records, whereas this is an
idempotency cache.

gopherstack-glw7: the prior pass declined to implement UpdateSiteAddress's
"after all Outposts that belong to the site have been deactivated" clause,
unable to tell from the SDK whether it is an independent gate or a paraphrase
of no-order-in-progress. That judgment is confirmed, with new evidence that
settles it more firmly than "unconfirmed": grep -rni "deactiv" across the
entire outposts@v1.66.1 module matches exactly one line -- the doc sentence
itself (api_op_UpdateSiteAddress.go:18). "Deactivated" names no lifecycle state
anywhere in the SDK; types.Outpost.LifeCycleStatus is a bare *string with no
enum backing. UpdateSiteAddress declares only AccessDeniedException,
ConflictException, InternalServerException, NotFoundException and
ValidationException -- ConflictException being the same generic type already
used for the order-in-progress check, with no distinguishing code.

So the second clause is not merely unconfirmed, it is unrepresentable here: an
Outpost in this backend is ACTIVE, PENDING_DECOMMISSION, or deleted, and never
occupies a third still-existing "deactivated" state. Implementing it would mean
inventing what the word means. Recorded in PARITY.md's structural_gaps with
what would actually settle it. No behavior change.

Regression test TestDeleteOutpost_PrunesRenewalIdempotencyCache asserts the
cache shrinks, reading it through a test-only accessor in export_test.go (the
sanctioned convention here; no new exported seam in production code). Neutering
the prune's HasPrefix guard (outposts.go:181), still compiling, fails that test
alone -- TestDeleteOutpost and TestDeleteOutpost_CleansRunningInstanceLedger
keep passing.

Closes: gopherstack-vsmv
Closes: gopherstack-glw7

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…guard

gopherstack-a2vk changed matchesExactRule from a string-coercing comparison to
reflect.DeepEqual on decoded values, making exact matching type-sensitive:
pattern "5" no longer matches event 5, and "true" no longer matches true. That
is correct per EventBridge, but nothing tested it in either direction -- no
pre-existing test covered the old lenient behavior either, which is why the
change passed silently.

TestFilter_ExactMatchTypeSensitivity now pins both halves, plus the reason
matchesExactRule uses reflect.DeepEqual rather than ==: == compiles fine on two
any values and panics at runtime on a non-comparable dynamic type, so a future
simplification would reintroduce a panic on malformed input.

Sensitivity proven by neutering, both still compiling. Restoring the old
lenient comparison fails string_pattern_vs_numeric_value_no_match and
string_pattern_vs_bool_value_no_match while the other three pass. Swapping
DeepEqual for == panics with "comparing uncomparable type []interface {}" in
array_pattern_element_vs_array_value_no_match_no_panic -- the stack runs from
the runner's poll loop through applyFilters into matchesExactRule with two
[]interface{} operands, confirming the case drives the real path rather than
passing vacuously.

Test-only change; filter.go is untouched.

Closes: gopherstack-50hq

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…king Delete ops

gopherstack-url6: GetChangeToken minted a fresh UUID on every call, contradicting
waf@v1.33.4 api_op_GetChangeToken.go:23-27 -- "If your application submits a
GetChangeToken request and then submits a second GetChangeToken request before
submitting a create, update, or delete request, the second GetChangeToken request
returns the same value as the first GetChangeToken request."

A single outstanding PROVISIONED token per backend is now held and returned until
MarkChangeTokenUsed consumes it, after which the next call mints a fresh one. The
field is guarded by the same coarse b.mu as the rest of the backend state and is
cleared in Reset.

TestWAF_ChangeToken_Unique was a pre-existing test asserting the AWS-contradicting
behavior (two calls never match). Rewritten to assert the real contract in both
directions: same-until-consumed, then new-after-consumed. Both halves are
independently load-bearing -- neutering the reuse (change_tokens.go:23) fails the
first, neutering the clear (change_tokens.go:66) fails the second.

TestChangeTokenStatus_Lifecycle/DeleteWebACL_transitions_to_INSYNC also broke,
because its mutate closure created a WebACL that fetched its own token and, under
the fix, stole the outstanding token the test had reserved for the delete. Fixed
by adding a setup step that creates the ACL and consumes its token BEFORE the
outer fetch. All 8 subtests keep their names and their wantBefore/wantAfter
assertions -- restructured, not weakened.

gopherstack-y6ok: the tag leak is real but the issue overstated it. 5 of the 12
Delete ops already cleared b.tags from an earlier same-day pass; the 7 match-set
families genuinely leaked, and had no ARN helper at all. Added the helpers and the
clears. Revert-proof shows exactly that split: the 7 fail against reverted code,
the 5 keep passing.

ListTagsForResource's missing existence check was deliberately NOT implemented.
WAFNonexistentItemException is declared on the op, but with the identical generic
type-level doc string ("The operation failed because the referenced object doesn't
exist.", types/errors.go:440) that it carries on ops which unambiguously do check
and on TagResource/UntagResource -- so its presence pins nothing about this op, and
api_op_ListTagsForResource.go adds nothing. Recorded as a gap rather than guessed
at.

The 7 new ARN resource paths follow the established lowercase-concatenated
convention of the 5 pre-existing helpers. No ARN example exists anywhere in the
pinned module to verify against literally; they are the backend's own tags-map key,
generated and consumed by the same helper, so internal consistency is what governs.
Noted in PARITY.md.

backendSnapshot gained OutstandingChangeToken. Purely additive with omitempty, so
wafSnapshotVersion stays at 1 -- the guard hard-fails a bump in the additive case --
and the golden inventory was refreshed with -update, a single added line.

Closes: gopherstack-url6
Closes: gopherstack-y6ok

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…up Description

CreateScheduleGroup accepted a Description, stored it, persisted it, and
GetScheduleGroup returned it. Real EventBridge Scheduler has no such member
anywhere on the group ops: CreateScheduleGroupInput carries only Name,
ClientToken and Tags (scheduler@v1.20.4 api_op_CreateScheduleGroup.go:31-42),
GetScheduleGroupOutput carries only Arn, CreationDate, LastModificationDate,
Name and State (api_op_GetScheduleGroup.go:39-60), and types/types.go has no
ScheduleGroup type at all -- only ScheduleGroupSummary, which also has no
Description. awsRestjson1_serializeOpDocumentCreateScheduleGroupInput
(serializers.go:254-271) emits only ClientToken and Tags, so a real client
cannot send the field even if it wanted to. Description IS real on
CreateScheduleInput (api_op_CreateSchedule.go:89), for schedules rather than
groups, which is the probable copy-paste origin.

The scheduler audit had filed this as an additive extra field not worth fixing.
That reasoning does not hold. This repo already treats a fabricated request
field as a real parity bug -- gopherstack-emho removed CreateClusterSubnetGroup's
invented VpcId on exactly that basis -- and this case is strictly worse, because
the field was not merely accepted but returned. Client code reading Description
back from GetScheduleGroup worked locally and would silently fail against real
AWS, which is precisely the divergence a parity emulator exists to prevent.

Removed end to end: handler input and output shapes, the backend signature, the
model field, and the persisted struct.

Four pre-existing tests asserted the fabricated shape and were corrected, not
deleted -- they were entrenching it, the same pattern this repo hit with
redshift's BatchDeleteClusterSnapshots and ssm's AddedLabels.
TestCreateScheduleGroup_WithDescription, which asserted the Description
round-tripped, is now TestCreateScheduleGroup_DescriptionNotAccepted and asserts
the key is absent from the response. The other three had their Description
assertions replaced with assertions on surviving fields (State, Name), not
dropped.

No snapshot version bump, deliberately. Removing a persisted field is not the
additive case and the guard correctly refuses to assume bookkeeping -- but a bump
here would be actively harmful: Restore discards the entire snapshot and starts
empty on version mismatch (persistence.go:225-234), so bumping would destroy
every user's schedules and groups to avoid carrying one fabricated key. No
DisallowUnknownFields exists in the restore path, so an older snapshot's leftover
"description" decodes as an ignored unknown key with every surviving field
intact.

Verified by the inverse of a neuter: re-adding Description to
getScheduleGroupOutput, still compiling, fails
TestCreateScheduleGroup_DescriptionNotAccepted.

Closes: gopherstack-ui6k

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
CreateVpc created only the default security group. AWS creates a main route
table for every VPC and deletes it with the VPC (ec2@v1.319.1
api_op_DeleteVpc.go:16), and this backend modeled neither the table nor any way
to discriminate one -- RouteTable had no Main field at all.

"Main" is a per-association property, not per-table:
types.RouteTableAssociation carries "// Indicates whether this is the main route
table. Main *bool", and SubnetId's doc reads "A subnet ID is not returned for an
implicit association". So the main table is modeled as always carrying one
implicit association with an empty SubnetID and Main=true, and Main is surfaced
unconditionally on DescribeRouteTables associations. RouteTable also gets an
internal Main bool with no SDK equivalent -- it is the discriminator the
dependency-violation carve-out needs.

Implemented: the main table per VPC with a local route (GatewayID "local",
api_op_ReplaceRoute.go:77), its implicit association, and Main on the wire.
Deliberately left absent and documented in PARITY.md: main-table reassignment
via ReplaceRouteTableAssociation (rejected outright rather than half-done), the
association.main DescribeRouteTables filter, a main table for the seeded
vpc-default and CreateDefaultVpc (which bypass CreateVpc and whose fixture shape
hundreds of unrelated tests depend on), and local routes on custom tables.

DeleteRouteTable and DisassociateRouteTable now refuse to remove the main table
and its implicit association. Neither op declares a specific error in the SDK --
extraction returns only "UnknownError" for both -- so these reuse the existing
ErrDependencyViolation/ErrInvalidParameter sentinels rather than invent an
unverified AWS code.

The landmine from the issue was real. vpcIndexedDependencyViolationLocked
rejected DeleteVpc whenever the VPC had any route table, so registering a main
one would have broken every DeleteVpc in the repo. It now blocks only on a
non-main table, mirroring the existing default-security-group carve-out, and
DeleteVpc cascades the main table the way it already cascades the default SG.
Defeating that carve-out (vpcs.go:388) fails every DeleteVpc test, confirming it
is load-bearing.

Also fixes gopherstack-97tc, a latent defect this work would have armed:
ReplaceRouteTableAssociation used subnetID != "" as its found-sentinel and
spliced the association out of its old table BEFORE checking it. Harmless while
every association had a subnet, but the implicit main association has an empty
SubnetID, so passing its ID would have detached a VPC's main route table and
then returned ErrAssociationNotFound -- a destructive no-op reporting failure.
The lookup now tracks found explicitly and mutates only after validation.

All four new guards verified by individual neuter, each still compiling:
vpcs.go:388 fails every DeleteVpc test; route_tables.go:85 fails
TestDeleteRouteTable_MainRouteTableRejected; route_tables.go:212 fails
TestDisassociateRouteTable_MainAssociationRejected; ec2core.go:401 fails
TestReplaceRouteTableAssociation_MainAssociationRejected.

TestDeleteRouteTable_MainRouteTableRejected initially passed under its neuter --
with the main guard defeated the next check (associations non-empty) returned the
same ErrDependencyViolation sentinel, so an ErrorIs assertion could not tell them
apart. Strengthened with a message assertion so it now discriminates the two
rejection paths.

Closes: gopherstack-y71o
Closes: gopherstack-97tc

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Single golden covering all services, so one -update run necessarily carries both
of this round's persisted-shape changes. Three lines, no collateral:

  + RouteAssociation.Main   (ec2, gopherstack-y71o)
  + RouteTable.Main         (ec2, gopherstack-y71o)
  - persistedScheduleGroup.Description  (scheduler, gopherstack-ui6k)

Deliberately no version bump for either.

ec2 is the additive case the guard itself calls bookkeeping -- every old field is
present unchanged.

scheduler removes a field, which the guard correctly refuses to wave through
("this is NOT the additive case ... Confirm whether a version bump is actually
required"). It is not required, and bumping would be actively harmful: Restore
discards the entire snapshot and starts empty on version mismatch
(services/scheduler/persistence.go:225-234), so a bump would destroy every user's
schedules and groups in order to avoid carrying one fabricated key. No
DisallowUnknownFields exists in the restore path, so an older snapshot's leftover
"description" decodes as an ignored unknown key with every surviving field
intact.

Refreshed only after both contributing changes were committed, so no in-flight
work was baked into the golden.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Generated by cmd/gendocs, not hand-edited. Picks up the gap counts recorded by
gopherstack-url6/y6ok (waf: the ListTagsForResource existence check left
unimplemented) and gopherstack-glw7 (outposts: UpdateSiteAddress's deactivation
clause recorded as unrepresentable).

CI's docs job runs make docs then git diff --exit-code, so this had to land.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ange

gopherstack-uifk removed ScheduleGroup's fabricated Description, changing
InMemoryBackend.CreateScheduleGroup from (ctx, name, description, tags) to
(ctx, name, tags). cli_test.go:2153 still passed the old four arguments, so
the root package's test build broke.

Missed because the agent that made the change was scoped to services/scheduler/
and never saw the root test file, and my gates could not catch it: go build ./...
does not compile test files, and go test ./services/... excludes the root
package. Only golangci-lint on ./ surfaced it, as a typecheck error.

Closes: gopherstack-ui6k

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…te names

gopherstack-5c3m: RegisterInstancesWithLoadBalancer only checked instance-ID
FORMAT (i-[a-f0-9]{8,17}), never existence, so any well-formed but nonexistent
ID registered successfully. InvalidInstance is genuinely declared on the op --
extraction returns InvalidInstance, LoadBalancerNotFound, UnknownError -- and
maps to InvalidEndPointException ("The specified endpoint is not valid.",
elasticloadbalancing@v1.36.4 types/errors.go), an SDK naming quirk whose wire
code is real. The ErrInvalidInstance sentinel already existed for
DescribeInstanceHealth.

The issue's title said no hook was wired, but EC2Resolver already existed
(services/elb/crossservice.go) with SecurityGroupExists/SubnetExists, already
connected by cli.go's wireELBCrossService. So the convention was established,
not absent; this extends it with InstanceExists rather than inventing a parallel
mechanism, and cli.go's elbEC2ResolverAdapter gains the matching method.

A nil resolver stays a silent no-op, never a rejection -- ~150 services build
backends in tests with no cross-service hooks, and a nil-means-reject would
break them and change default behavior for anyone not running a full stack.
Pinned by no_resolver_wired_accepts_any_id.

gopherstack-ogvw: the premise held. builtinPolicyTypes() already models the full
PolicyAttributeTypeDescription schema per type, and PolicyTypeName was already
validated, but nothing checked a submitted attribute NAME against that schema --
any name and value was accepted and stored. Now rejected with
ErrInvalidConfiguration (InvalidConfigurationRequestException, "The requested
configuration change is not valid.").

Cardinality is deliberately NOT enforced, despite the SDK documenting its values
(types/types.go:483-489, "ONE(1) : Single value required" etc).
ProxyProtocolPolicyType's sole attribute is Cardinality ONE with a DefaultValue,
and this package's pre-existing tests create that policy supplying zero
attributes and expect success. A literal reading would break correct established
behavior, so name validation only, with the rest documented in PARITY.md.

Verified by neutering each guard, both still compiling: instances.go:43 fails
unknown_instance_rejected alone, leaving no_resolver_wired_accepts_any_id and
known_instance_accepted passing; policies.go:265 fails
unknown_attribute_name_rejected alone.

Blast radius: enforcement change, so the full go test ./services/... was run --
no failures.

Closes: gopherstack-5c3m
Closes: gopherstack-ogvw

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ventbridge and pipes

gopherstack-a2vk left services/eventbridge/pattern.go and services/pipes/filter.go
each carrying a nested EventBridge event-pattern matcher for the same
specification -- pipes@v1.26.4 declares Filter.Pattern as a bare *string with no
grammar of its own -- with numeric and cidr ported by hand and drifting.

Consolidation is partial, deliberately. The two matchers diverge in ways a single
implementation cannot absorb without changing one service's behavior:

- Operator sets differ. eventbridge supports wildcard, equals-ignore-case, $or
  and object-form anything-but; pipes supports none of those. Filed as
  gopherstack-5eok rather than silently changed, since closing it changes what
  pipes matches.
- Validation architecture differs fundamentally. eventbridge rejects an
  unrecognized matcher for the WHOLE pattern at compile time, matching real AWS
  (PutRule returns InvalidEventPatternException); pipes has no creation-time
  validation at all and fails closed per rule-array element at match time. Filed
  as gopherstack-sphp.
- Exact-match comparison differs only in appearance: eventbridge's == is safe
  because validateMatcherArray restricts element types at compile time, while
  pipes needs reflect.DeepEqual because it has no such gate.

So only what was genuinely duplicated moved: the numeric-comparison operator
switch with its rules-come-in-pairs loop, ToFloat64, and the CIDR range check.
compareNumeric was a byte-for-byte duplicate; the CIDR logic differed only in how
it decoded its strings. Net 103 lines deleted from the two services for 16 added,
plus an 80-line shared package.

Verified both services genuinely route through the shared code rather than
leaving it dead beside two live copies: inverting pkgs/eventpattern's
MatchCIDR return, still compiling, fails BOTH suites -- eventbridge's package
tests and pipes' cidr_operator_matches/cidr_operator_no_match.

No test file in either service was touched, and no behavior changed anywhere, so
neither PARITY.md gained a note claiming a fix.

Blast radius: shared pkgs/ change, so the full go test ./services/... was run on
a clean tree -- no failures.

Closes: gopherstack-amfu

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
P1. A pattern of {"foo": [{"anything-but": [{"x":1}]}]} PASSED compilePattern
validation and then panicked at match time with "comparing uncomparable type
map[string]interface {}". matchAnythingBut's list case used
slices.Contains(ab, eventVal), which compares with ==, and validateMatcherObject
checked only that anything-but was a KNOWN KEY, never the SHAPE of its value.
So a pattern author could put an object or array inside the list, and when the
event field's value had the same non-comparable dynamic type, == panicked.
Nothing recovers around matchCompiledPattern and delivery.go calls it on the
PutEvents hot path, so this crashed the request rather than failing closed.

Fixed on both levels, deliberately.

Validation now rejects the shape at compile time. AWS's content-filtering
documentation states "You can use anything-but matching with strings and numeric
values, including lists that contain only strings, or only numbers"
(eb-event-patterns-content-based-filtering.html#eb-filtering-anything-but, cited
in the code), so a map or array element is not something real AWS accepts, and
PutRule/TestEventPattern returning InvalidEventPatternException matches its
behavior. Object-form anything-but keys are validated against the same list
matchAnythingButObject recognizes, so an unrecognized inner key is rejected at
creation instead of silently never matching.

Matching is now panic-safe regardless, via reflect.DeepEqual instead of ==.
Validation only constrains patterns compiled through compilePattern; a crash on
the delivery path must not be one loosened validator away. This is the same
guard, for the same reason, as services/pipes/filter.go's matchesExactRule --
the identical defect class, on the side that had the test.

Post-fix behavior for the repro input: rejected at PutRule/TestEventPattern, and
never reaches matching.

Neighbours swept. matchAnythingBut's default branch cannot receive a
non-comparable type -- []any and map[string]any are peeled off by earlier cases,
and Go only panics when both dynamic types are identical and non-comparable. The
exact-match defaults in matchObjectField and matchSingleValue are reached only
after validateMatcherArray has excluded those types. pattern.go:424 was the only
unsafe site.

The two fixes are independently pinned, each by its own test. Neutering
DeepEqual back to == panics only
TestPattern_AnythingBut_DefenseInDepth_NoPanicWhenValidationBypassed, since
validation still blocks the main repro; neutering validateAnythingButValue to a
no-op fails only TestPattern_AnythingButNonScalarListElement_RejectedAtCompile,
since DeepEqual keeps matching safe. Both neuters compile.

Found by the gopherstack-amfu duplication audit rather than a bug hunt, and
reproduced independently before this fix was written.

Closes: gopherstack-lrgk

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…d status constants

gopherstack-7z3p: the SDK's deserializer reads failureReason for DatasetGroup
(personalize@v1.50.4 deserializers.go:11024, in
awsAwsjson11_deserializeDocumentDatasetGroup), but datasetGroupToMap omitted it
unconditionally -- while its own sibling datasetGroupSummaryToMap already emitted
it conditionally. An internal asymmetry, now fixed to match.

This does not make the field observable through the live API today, because
nothing sets it (see below). It makes the Describe shape correct for when it is
set, matching the accepted SolutionVersion.FailureReason precedent of a field
modeled but not yet populated. Fourteen personalize types carry FailureReason in
the SDK; only DatasetGroup and SolutionVersion have it on the backend model at
all, and the rest are already documented as absent-not-fabricated. Not reopened
here.

gopherstack-h3th: mostly a non-bug, and deliberately left that way. Five of the
seven status constants are unreachable BY CONSTRUCTION in a synchronous,
single-process emulator -- every Create* completes atomically so there is no
provisioning phase to be pending in or to fail independently, every Delete*
removes the resource with no pending-delete window, and StopRecommender already
jumps ACTIVE<->INACTIVE the way StopSolutionVersionCreation jumps to
CREATE STOPPED. Building a timer-driven CREATE PENDING -> IN_PROGRESS -> ACTIVE
machine would fabricate AWS behavior rather than emulate it, and would make the
suite slow and flaky in a repo that bans time.Sleep in tests. Recorded as
unreachable-by-construction in PARITY.md instead.

The real finding inside that non-bug: statusUpdatePending and
statusUpdateProgress were not merely unreachable, they were FABRICATED.
"UPDATE PENDING" and "UPDATE IN_PROGRESS" appear nowhere in the pinned SDK --
not in enums, types, or serializers for any of its Status-bearing types -- so
had anything ever assigned them the backend would have emitted a status no real
client could receive. Same defect class as the "STOPPED" vs "CREATE STOPPED"
trap this file already documents. Removed.

No regression test accompanies the constant removal: nothing ever assigned them,
so there is no observable behavior to lock. The shape fix is pinned by
TestDatasetGroupToMap_FailureReason -- neutering the conditional
(handler_dataset_groups.go:79), still compiling, fails the present subtest while
absent keeps passing.

Landmine recorded in PARITY.md: the store.go doc comment's placement matters to
the unused linter's grouping heuristic. A standalone comment above
statusStopPending breaks contiguity with the used statusSolutionVersionStopped
sibling and triggers a false unused finding, which is why the verdict lives in
one block-level comment.

Closes: gopherstack-7z3p
Closes: gopherstack-h3th

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
A malformed pipe filter was accepted silently and then simply never matched at
delivery time, rather than surfacing an error the way eventbridge's PutRule and
real AWS Pipes both do. CreatePipe and UpdatePipe now reject a structurally
invalid pattern with ValidationException, which both ops declare.

AWS validates here. Its docs are explicit (eb-pipes-event-filtering.html,
"Filtering Kinesis and DynamoDB messages"): "Non-JSON | Any | EventBridge throws
an exception at the time of Pipe creation or update. The filter pattern must be
valid JSON format." The SDK's own validators.go never inspects FilterCriteria,
so client-side validation alone would not have settled it.

Corrects the premise this issue inherited from gopherstack-amfu. That framing
said pipes supports none of $or/wildcard/equals-ignore-case/object-form
anything-but. AWS's operator-support table (eb-create-pattern-operators.html,
"Pipe support" column) shows real Pipes DOES support $or and equals-ignore-case;
only bare wildcard and anything-but's object-negation forms are genuinely
EventBridge-only. gopherstack's filter.go simply has not implemented $or or
equals-ignore-case yet. gopherstack-5eok has been updated with this correction.

That distinction drove the design. Reusing eventbridge's isKnownMatcher would
have accepted $or and equals-ignore-case as valid while filter.go can never
match them -- CreatePipe saying yes and delivery silently never matching, which
is worse than no validation at all. So isKnownPipeMatcher mirrors exactly the
six keys filter.go's matchesRuleObject dispatches on, and anything the runtime
cannot match is rejected loudly at creation instead. Non-JSON substring
patterns, this backend's documented backward-compatible mode, are untouched:
only {-prefixed patterns get structural validation.

Creation-time validation and runtime fail-closed matching are independent
layers, as gopherstack-lrgk established for eventbridge, and both are pinned
separately. Neutering validateFilterCriteria fails 22 subtests across the two
ops while the runtime fail-closed tests keep passing, proving they exercise the
matcher on their own rather than riding on the new rejection.

Three pre-existing tests asserted patterns the new validation rejects at
creation. All three were preserved, not weakened: same wantMatch: false
assertions, with the pipe now built empty and the invalid pattern injected via
SetFilterPatternForTest so filter.go's fail-closed path is still exercised. The
third, TestFilter_ExactMatchTypeSensitivity's non-comparable-array case, was not
named in the brief -- the agent found it and applied the same treatment.

Landmine, recorded in PARITY.md and on gopherstack-5eok: isKnownPipeMatcher must
stay in lockstep with matchesRuleObject. Implementing an operator without
relaxing the validator in the same commit leaves CreatePipe rejecting patterns
the runtime can newly handle.

Closes: gopherstack-sphp

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…stUsers

UpdateUserCustomPermission wrote to b.userCustomPermissions and
DeleteUserCustomPermission cleared it, but DescribeUser and ListUsers built
their responses purely from storedUser.toUser() and never consulted that map. A
client could set a custom-permissions profile and never observe it.

The field is real and this is the only way to read it. types.User carries
"// The custom permissions profile associated with this user.
CustomPermissionsName *string" (quicksight@v1.123.1 types/types.go:23202), and
both DescribeUserOutput.User and ListUsersOutput.UserList are types.User. There
is no DescribeUserCustomPermission op -- the SDK has
DescribeAccountCustomPermission and DescribeRoleCustomPermission but no user
equivalent -- so DescribeUser/ListUsers are the only read path, which is what
makes this write-only rather than readable-elsewhere. Emitted only when
non-empty, matching the serializer's omit-when-nil behavior; no empty-string
emission.

Also fixes gopherstack-3tju, an adjacent bug that this change would otherwise
have made visible rather than merely latent: DeleteUser and
DeleteUserByPrincipalID removed the user but left the userCustomPermissions
entry behind. That map is keyed by user NAME, so re-registering a user with the
same name in the same namespace silently inherited the deleted user's profile.
Dormant while nothing read the map; live the moment the read path exists. Fixed
in the same commit because shipping the read alone would have introduced the
defect, and filed separately per the campaign rule.

Verified by neutering the wire emission (handler_user.go:217), still compiling:
describe_user_surfaces_it and list_users_surfaces_it fail while
absent_before_update and absent_again_after_delete keep passing.

RegisterUser and UpdateUser return *User through the same converter and were
left alone -- the issue named only the two read ops. UpdateUser is recorded in
PARITY.md as a smaller residual gap.

Two //nolint:dupl directives were removed as dead. They were live before this
change; nolintlint began flagging them only once ListUsers grew two lines and
broke dupl's pairing with ListIngestions. Shrinking ListUsers back would require
restoring them.

Closes: gopherstack-rt14
Closes: gopherstack-3tju

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Witness Patrol and others added 30 commits September 7, 2026 13:18
…ted code

Third cluster of gopherstack-yatn's orphan-code class.

"InvalidAlgorithmException" has zero occurrences anywhere in kms@v1.55.4 --
not in deserializers.go, not in types/errors.go, not on an unrelated
operation. GenerateMac (deserializers.go:2953) and VerifyMac (:6647) both
declare InvalidKeyUsageException, whose doc comment (types/errors.go:753-767)
names this exact condition:

  The encryption algorithm or signing algorithm specified for the operation
  is incompatible with the type of key material in the KMS key (KeySpec).
  [...] For generating and verifying message authentication codes (MACs),
  the KeyUsage must be GENERATE_VERIFY_MAC.

Control ops Sign, Verify, Encrypt, Decrypt and ReEncrypt declare it too, and
none of them declares InvalidAlgorithmException.

validateMacAlgorithm has exactly two callers -- hmac.go:42 (GenerateMac) and
hmac.go:102 (VerifyMac) -- so one shared remedy is right here, with no
per-call-site split. ErrInvalidAlgorithm had no other user, so removing the
sentinel outright closes both the wire mapping and the sentinel's own message
string in one step; the cluster-2 gap where a fix touched only the handler
mapping cannot recur here.

Not authorization or enforcement: this is algorithm-vs-keyspec input
validation inside HMAC generate/verify. No key-authorization, grant
evaluation, or policy enforcement path is touched.

Three pre-existing tests in hmac_test.go asserted the invented code. Corrected
to InvalidKeyUsageException; strengthened, not weakened. Two new real-client
regression tests added in mac_algorithm_wiring_test.go, both failing before
the fix. crypto.go:825 neutered by line number: compiles, and all five
algorithm tests fail.

kms's 32 open ValidationException landmine comments (gopherstack-q9bs) were
read for context and deliberately left untouched.

The networkmanager half of this cluster is NOT a bug. InvalidPolicyDocument at
corenetworks.go:47,175 sits in CoreNetworkPolicyError.ErrorCode, a *string
with no enum, nested inside CoreNetworkPolicyException.Errors -- opaque
per-item payload, not the wire discriminator. handler.go:247 sends the correct
outer type CoreNetworkPolicyException, which both CreateCoreNetwork and
PutCoreNetworkPolicy declare. Already declined at
services/networkmanager/PARITY.md:51-58, re-verified at :1291-1303, and
independently re-derived here. No files changed there.

Closes gopherstack-xew9

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
errtargetaudit's orphan-code class flags BatchStopJobRun's
"IllegalStateException". It is a per-entry batch code in a 200 body
(jobs.go:496-503 appends into BatchStopJobRunOutput.Errors and continues;
it never reaches a sentinel), and ErrorDetail.ErrorCode is an unconstrained
*string with no enum, so no declared set applies.

PARITY.md already noted the field was correctly populated but not that this
audit class had been screened against it. Recording it so the next pass does
not re-derive the same conclusion -- six passes in this campaign have been
spent re-confirming already-declined findings.

Refs gopherstack-yatn

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Fourth and final cluster of gopherstack-yatn's orphan-code class.

ses DeleteReceiptFilter emitted "FilterDoesNotExist" for a missing filter.
That string appears nowhere in ses@v1.37.4, and the operation declares
nothing at all: awsAwsquery_deserializeOpErrorDeleteReceiptFilter is a
default-only switch with no cases, and botocore's ses/2010-12-01
service-2.json carries no "errors" key on the op. A missing filter is now a
no-op, matching the sibling precedent already established for
DeleteReceiptRule, DeleteReceiptRuleSet and
DeleteCustomVerificationEmailTemplate in undeclared_delete_errors_test.go --
DeleteReceiptFilter was simply missed by that sweep. ErrReceiptFilterNotFound
had one raiser and is removed outright, closing mapping and sentinel string
together.

sts DecodeAuthorizationMessage emitted "InvalidParameter" for a missing
required EncodedMessage. This one needed care not to trade one undeclared
code for another: neither "InvalidParameter" nor "MissingParameter" is
modeled in sts@v1.45.4, whose DecodeAuthorizationMessage declares only
InvalidAuthorizationMessageException. The distinction is real anyway.
MissingParameter is a genuine Query-protocol frontend code -- it is in
errtargetaudit's genericProtocolCodes, gopherstack-udkm's per-entry audit
confirmed zero modules model it per-op, and AWS's STS Common Errors page
documents it for exactly this condition. Bare "InvalidParameter" is
documented nowhere by AWS. Twelve sibling missing-parameter sentinels in the
same switch already map to MissingParameter; ErrMissingEncodedMessage was the
sole outlier. Not a credential-issuance, assumed-role or policy-decoding
path -- error taxonomy only.

Two pre-existing tests asserted the invented codes. sts's carried an uncited
comment claiming "AWS returns InvalidParameter (not MissingParameter)", which
is false. ses's asserted a 400 for a missing filter and is now renamed to say
it is idempotent. Both corrected with the deserializer cite in a comment;
strengthened, not weakened.

Guards neutered individually by line number and confirmed load-bearing: a
re-inserted not-found guard in receipt_rules.go fails all three ses tests,
and restoring ErrMissingEncodedMessage to its own InvalidParameter case fails
TestDecodeAuthorizationMessageEmpty. Both compile.

Two findings in this cluster were NOT bugs and are recorded in PARITY.md
rather than changed:

  workmail CreateImpersonationRole EntityAlreadyExistsException -- already
  declined at services/workmail/PARITY.md:83; the op models no
  AlreadyExists-shaped exception, so no replacement was invented.

  xray PutTraceSegments InvalidSegment -- a per-entry code on
  UnprocessedTraceSegment inside a 200 body. That field is a free-form
  *string, and the op dispatches only InvalidRequestException and
  ThrottledException as HTTP errors.

Closes gopherstack-co3w

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ndmines

gopherstack-i4q8 asserted that "ValidationException does not exist in the
pinned kms module ... so all 36 sites emitting it are wrong", and left 32
landmine comments saying so. errtargetaudit's genericProtocolCodes allowlist
asserted the opposite. Both were in the tree. This settles it against i4q8's
framing.

Evidence, verified against the vendored botocore-style model that
aws-sdk-go-v2's generator consumes:

  aws-sdk-go@v1.55.8 models/apis/kms/2014-11-01/api-2.json -- zero
  occurrences of ValidationException in the whole file, not just per-op error
  lists. KMS's model genuinely never declares it at any level, which
  corroborates i4q8's original grep.

  The same directory's docs-2.json documents KMS returning it anyway, on the
  DER-encoded X.509 public key parameter shared by GetPublicKey and
  DeriveSharedSecret: "If you use Amazon Web Services CLI version 1, you must
  provide the DER-encoded X.509 public key in a file. Otherwise, the Amazon
  Web Services CLI Base64-encodes the public key a second time, resulting in
  a ValidationException."

A double-Base64 blob is still well-formed Base64, so it passes client-side
parameter validation and is rejected by the service. That is AWS's own
documentation of a live wire ValidationException on an operation whose model
does not declare it -- precisely the pre-dispatch, model-independent fault
the allowlist exists for. kms@v1.55.4's deserializeOpError default case
preserves an unmodeled wire code verbatim rather than rejecting it, which is
what an SDK built to expect such codes looks like.

i4q8's own key_agreement.go comment had already found this quote and
dismissed it as "not a modeled type this SDK can deserialize" -- begging the
question the allowlist exists to answer.

So the 32 landmine comments assert something false and are removed. The four
sites i4q8 actually remapped (to LimitExceededException and
UnsupportedOperationException) stand on their own merits and are untouched,
as are their justifying comments.

Comments only: `git diff -U0 | grep` for any changed non-comment line returns
nothing across all 17 files. No logic, error value, or control flow changed
anywhere in kms; no map or logic change in either audit tool. The kms finding
set is unchanged at 9.

Recorded in both allowlists' doc comments so this is not re-litigated. Notably
ValidationException was the one entry that had neither a brief citation nor a
"confirmed live" reference -- only a bare "sibling of ValidationError"
assertion. It now meets the standard the other entries were held to.

I expected this to go the other way and said so when filing it; the evidence
is the reason it did not.

Closes gopherstack-q9bs

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
gopherstack-jpfk asked whether ssm's reuse of a ValidationException-shaped
sentinel for per-op input validation is a real defect class. Answer: no,
with one small real exception concentrated entirely in PutParameter.

Measured across ssm@v1.73.4's 152 deserializeOpError switches: exactly three
operations declare ValidationException -- GetAccessToken, StartAccessRequest,
StartExecutionPreview. The other 126 of 129 flagged sites guard fields the
SDK's own input structs mark required (Smithy @required) or enum membership,
and their operations declare nothing that fits. That is idiomatic: AWS
validates structural constraints at the protocol front door regardless of
per-op modeling, which is why only 3 of 152 ops model the code at all. Same
verdict shape as gopherstack-mq6m's mgn probe, reached differently -- mgn was
one funnel point counted many times, ssm is many independent decisions that
are each individually correct.

The exception is PutParameter, whose own declared set contains exact
word-for-word matches for three of its four checks:

  validateParameterName    -> ParameterPatternMismatchException
                              "The parameter name isn't valid."
  Type enum check          -> UnsupportedParameterType
                              "The parameter type isn't supported."
  validateAllowedPattern   -> InvalidAllowedPatternException
                              "The request doesn't meet the regular
                               expression requirement."

Doc comments quoted verbatim from ssm@v1.73.4 types/errors.go. The fourth
check (DataType) has no fitting declared code and keeps ValidationException
with a landmine comment saying so.

Two near-misses were rejected by reading the doc comment rather than the
type name: InvalidParameters is about "values for all required parameters in
the SSM document", not general required input, and
InvalidAutomationSignalException is about a signal "not valid for the current
execution", a runtime-state check rather than an unrecognized enum value.

Each of the three helpers has a single call site, all inside
validatePutParameterInput, which itself is called only by PutParameter -- so
one remedy per helper is correct with no per-call-site split.

classifySSMErrorExtended's if-chain became a loop over a classifier slice.
Behaviour-preserving: same classifiers, same first-match-wins order, with the
new group inserted second. It was at the cyclop budget and a seventh `if`
would have exceeded it; this repo bans cyclop nolints.

Four pre-existing assertions expected the generic sentinel, and one asserted
only that __type was non-empty. All corrected to the specific declared code,
each with the reason inline. Strengthened, not weakened.

Three guards neutered individually by line number -- parameters.go:62, :141,
:325 -- each compiles and fails its own test. ssm's distinct emission sites
drop 129 to 126, exactly the three fixed lines; the (op, code) finding count
stays 71 because PutParameter still has the deliberately-unfixed DataType
site.

PARITY.md's 2026-08-29 note had explicitly declined this same PutParameter
fix for lack of confidence. Marked superseded rather than left to contradict
the code.

Not authorization-adjacent: error codes on input validation only, with no
change to command targeting, session access, or enforcement.

Noted and left alone as out of scope: GetParameters reports missing names
through the shared resolveParameterSelector helper, where real AWS returns
them in the output's InvalidParameters list rather than erroring at all.
That is a response-shape redesign, not an error-code fix.

Closes gopherstack-jpfk

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…eachable

gopherstack-t8iz asked whether ErrInvalidRoutingConfiguration's fourth raiser
can emit ValidationException from StartSyncExecution, which does not declare
it. Verdict: genuinely unreachable through every path, including restore. No
mapping change -- StartSyncExecution declares nothing that fits, and swapping
one undeclared code for another is not a fix.

The raiser and caller list matches what the issue claimed: aliases.go:15,25,36
(validateRoutingConfig) plus qualified_arn.go:92 (pickRoutedVersion), the
latter reached via resolveExecutionTarget from executions.go:92
(StartSyncExecution) and :280 (StartExecution). No other callers exist.

Every path that could produce an alias with empty RoutingConfiguration was
checked:

  CreateStateMachineAlias validates routing before constructing the alias,
  and aliases.go:71 is the only StateMachineAlias construction site in the
  package.

  UpdateStateMachineAlias assigns only inside `if len(routing) > 0`, so an
  empty slice leaves the existing already-validated config untouched. This
  is doubly guarded: neutering just the length check still leaves
  validateRoutingConfig rejecting the empty slice.

  Restore cannot produce an alias at all. persistence.go's
  newPersistedDTORegistry covers only stateMachines, activities and
  executions; Restore leaves b.aliases as constructed, i.e. empty. So a
  hand-edited or older snapshot cannot reintroduce one.

Two proof-of-unreachability tests added rather than a behavioural regression
test, since there is no behaviour to change:
TestUpdateStateMachineAlias_EmptyRoutingLeavesConfigUnchanged and
TestAliasRoutingConfiguration_NotPersistedAcrossRestore. The first is
load-bearing on aliases.go:108 -- neutering that line compiles and fails it.

Snapshot format untouched, no version bump: persistence.go is unchanged.

Closes gopherstack-t8iz

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
The tool reported one row per (operation, code) pair, which is not the
actionable unit. mgn showed 122 class A findings; gopherstack-mq6m spent a
whole agent pass discovering by hand that they collapse to four source lines,
two of which are generic plumbing reached by nearly every operation. A reader
could not tell a 90-op funnel point from 90 independent defects.

Each section is now grouped by file:line, with the op count, the mechanism
tag, and the ops behind it. mgn's 122 findings now read as exactly the four
lines mq6m found:

  services/mgn/handler.go:372  InternalServerException  90/95 ops
    [constructor classifier: internalServerError]  -- SHARED PLUMBING
  services/mgn/handler.go:361  ValidationException  32/95 ops
    [constructor classifier: validationError]  -- SHARED PLUMBING
  services/mgn/applications.go:27  ValidationException  1/95 ops
  services/mgn/waves.go:27  ValidationException  1/95 ops

The shared-plumbing threshold is 0.25 of a service's resolved ops, chosen
from the corpus rather than taste. Across all 354 site groups in 160
services the ratios are 0.947 (mgn marshalResponse), 0.337 (mgn
decodeJSONBody), then 0.162 (cloudfront quantity_validation.go:56, a real
but narrower site) and down. 0.25 sits in the empty gap, firing on exactly
the two mq6m-confirmed generic sites and nothing else observed. A
sharedPlumbingMinOps floor mirrors the existing minOpsForResolutionGuard so
the ratio cannot fire at small N.

The mechanism tag is now on every group line rather than only in the JSON.
Six of the ten residual orphan findings are the composite-literal shape --
a per-entry code written into a free-form *string inside a 200 body -- and
that class is now visible at a glance instead of requiring a JSON dive. The
new site key (File, Line, Code) is also strictly more precise than the old
causeKey (Code, Mechanism), which carried no location and could conflate
different files sharing a generic mechanism string.

Op lists are not truncated: the set-diff guard needs to reconstruct
(op, code, site) triples mechanically from stdout, and eliding names would
make that lossy. The header line alone carries the at-a-glance signal.

Presentation only -- scan.go, emit.go, classifiers.go and deser.go are
untouched. Verified by set-diff against a binary built from the pre-change
report.go and main.go: 360 class A, 10 orphan, 70 warnings both before and
after, and 510 unique (service, section, op, code, site) triples extracted
from stdout in each, identical in both directions.

sharedPlumbingRatio neutered at report.go:318 from 0.25 to 0.5: compiles,
fails TestIsSharedPlumbing_ThresholdFromCorpus, and drops the corpus tag
count from 2 to 1 as the decodeJSONBody funnel goes unflagged.

No nolint suppressions. A fieldalignment warning was fixed by reordering
struct fields and a goconst violation by naming two test constants.

Closes gopherstack-2evc

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Slice of gopherstack-jkma, from the findings gopherstack-udkm unmasked when
it stopped genericProtocolCodes from suppressing ValidationException in the
services that model it per-op.

Neither service's flagged operations model it. Verified per-op, not in
aggregate: of configservice@v1.68.4's 102 operations, 37 do declare
ValidationException -- but none of the 19 flagged ones is among them, so
every finding is a real mismatch and no fix displaced a validly declared
code. efs@v1.44.4 declares it on only 4 of 31 operations
(CreateReplicationConfiguration, DescribeBackupPolicy,
DescribeReplicationConfigurations, PutBackupPolicy), none of them flagged.

awsconfig: 19 findings across 22 raise lines in 8 files, all funnelling
through the shared ErrValidation sentinel. This is the ssm shape -- many
independent per-op decisions to reuse a generic sentinel -- not the mgn
shape of one plumbing line counted many times, so it was worth working.
Eight sites have a fitting declared code: seven ops declare
InvalidParameterValueException, which this package already uses for exactly
this pattern on PutRemediationExceptions and DeleteRemediationExceptions,
and DescribeConfigRules declares InvalidNextTokenException, a word-for-word
fit for its invalid-NextToken condition. The remaining 11 ops declare no
validation-shaped code at all -- only not-found and conflict codes -- and
keep ErrValidation with a landmine each rather than a guess.

efs: 8 findings across 15 raise lines, mostly behind validateTags
(CreateAccessPoint, TagResource, CreateTags, CreateFileSystem). All 30 of
efs's 31 operations declare BadRequest -- the exception, DescribeAccount
Preferences, is not flagged -- and its doc reads "Returned if the request is
malformed or contains an error such as an invalid parameter value or a
missing required parameter". An exact fit, and a shared remedy is safe here
precisely because every caller declares it, unlike the kms helpers in
gopherstack-4ra7. Precedent already in this service: PutFileSystemPolicy was
swapped from ValidationException to InvalidPolicyException for the same
reason in an earlier pass.

Eleven pre-existing assertions had hard-coded the wrong sentinel, each
locking in the defect being fixed here. All corrected to the specific
declared code with the reason inline; every change makes the assertion more
specific, none removes one.

Three representative guards neutered by line number -- aggregators.go:78,
handler_config_rules.go:88, tags.go:19 -- each compiles and fails its own
test.

awsconfig 19 findings -> 11, all intentional landmines. efs 8 -> 0.

Closes gopherstack-rj8j

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…on is legal

gopherstack-5rjn and gopherstack-4ra7, worked together as one cluster.

CreateKey's declared set, re-derived from kms@v1.55.4, contains no
key-usage-shaped code: CloudHsmClusterInvalidConfiguration,
CustomKeyStoreInvalidState, CustomKeyStoreNotFound, DependencyTimeout,
InvalidArn, KMSInternal, LimitExceeded, MalformedPolicyDocument, Tag,
UnsupportedOperation and the three Xks codes. InvalidKeyUsageException is
absent, and its own doc is about an existing key's KeyUsage being wrong for
the operation invoked -- not a creation-time KeySpec/KeyUsage pairing. So it
was never merely undeclared here; it was the wrong condition.

validateKeySpecUsage now raises ErrUnsupportedParameter
(UnsupportedOperationException), which CreateKey does declare and which
import.go already uses for the same KeySpec-shaped rejection. Weighed
ValidationException against gopherstack-q9bs's new evidence and declined:
q9bs established a pre-dispatch structural fault (a malformed blob rejected
before operation logic), whereas a KeySpec/KeyUsage pairing is cross-field
operation logic. Different condition, so the better-evidenced declared code
wins.

The second site turned out not to be an error-code bug at all. Its premise
was false: kms@v1.55.4's own api_op_CreateKey.go:83 states "You can create
multi-Region KMS keys for all supported KMS key types: symmetric encryption
KMS keys, HMAC KMS keys, asymmetric encryption KMS keys, and asymmetric
signing KMS keys." The emulator was rejecting something AWS allows, so the
check is removed rather than given a better code. That is a behaviour fix,
not a taxonomy one.

gopherstack-4ra7 gets no plumbing, deliberately. Both helpers' caller lists
were re-verified by grep. None of validateEncryptionContextSize's seven
callers declares a size-shaped code, so threading a sentinel through to
choose between codes that all fail to fit would add cost for no gain.
resolveKeyID's branch is confirmed unreachable -- both writers of
keyIDResolutionCache always store cachedResolution, and Restore clears the
cache rather than repopulating it -- so it is a landmine, matching the
gopherstack-t8iz precedent. Both existing comments are strengthened in place
with the caller lists and the unreachability proof. No behaviour changed at
either site.

Three pre-existing tests encoded the false premises.
TestHandlerCreateKeyHMACMultiRegionRejected asserted a 400 for a legal
request and is replaced by TestHandler_CreateKey_HMACMultiRegion_ViaHTTP,
which asserts 200 and the round-tripped KeySpec, KeyUsage and MultiRegion --
strictly stronger than what it replaced. TestCreateKeyValidations'
hmac_multiregion case flipped to wantErr:false, and
TestKMSCreateKeyIncompatibleSpecUsage's assertion moved to the declared
sentinel.

Neutering found a coverage gap the sweep left: reverting keys.go:36 (the
symmetric branch) fails TestKMSCreateKeyIncompatibleSpecUsage, but reverting
keys.go:61 (the HMAC branch) passed everything -- that line's sentinel was
unverified by any test. Added an HMAC_256_with_SIGN_VERIFY case; the neuter
now fails on exactly that subtest. Re-adding the removed multi-Region
rejection fails both HMAC multi-Region tests. All neuters compile.

Not authorization or enforcement: request validation and error-code mapping
only, with no key-authorization, grant-evaluation or policy-enforcement path
touched.

Closes gopherstack-5rjn
Closes gopherstack-4ra7

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…0dw; correct kpk5

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…declare

gopherstack-bzyl. The filing said the findings split across two codes; there
are three. InvalidStateException (RevokeCertificate, 2 sites) was missing
from my list entirely, so the slice was under-scoped as filed.

RequestCertificate (9 sites): its deserializer declares InvalidArnException,
InvalidDomainValidationOptionsException, InvalidParameterException,
InvalidTagException, LimitExceededException, TagPolicyException and
TooManyTagsException -- never ValidationException. Its exclusive validators
(validateRequestCertInput, checkIdempotency, validateManagedBy, and the
malformed-body case) now raise a new ErrRequestCertInvalidParameter.

validateDomainName is shared with CreateAcmeDomainValidation, which DOES
declare ValidationException, so it was parameterised rather than renamed
globally -- the same shape as efs's validateTags, and the opposite of kms's
validateEncryptionContextSize where no caller had a fitting code.

setTags (3 sites): two length branches still hardcoded ErrInvalidParameter
while the function already took an invalidTagErr parameter -- an incomplete
parameterisation left by gopherstack-ftkd earlier the same day. Both now use
the caller's sentinel. AddTagsToCertificate and RemoveTagsFromCertificate
declare InvalidTagException.

RevokeCertificate (2 sites): declares AccessDeniedException,
ConflictException, InvalidArnException, ResourceInUseException,
ResourceNotFoundException, ThrottlingException and ValidationException --
not InvalidStateException. The prior pass treated both guards as one pair;
they are different conditions and get different answers. The
PENDING_VALIDATION guard becomes ConflictException, whose doc is a direct
match: "You are trying to update a resource or configuration that is already
being created or updated. Wait for the previous operation to finish and try
again." The already-revoked guard stays landmined: ValidationException is
declared but its doc is about input failing constraints, and
ResourceInUseException is about association with another service. Neither
fits a terminal one-time state, and InvalidStateException is a real acm code
elsewhere (ResendValidationEmail, UpdateCertificateOptions), so this is a
right-code-wrong-op landmine rather than an invention.

The six ResourceNotFoundException findings are NOT defects. They guard a
certificate ARN that RequestCertificate minted synchronously in the same
request before returning it, so they cannot fire. Already recorded under
gopherstack-ftkd's root cause 3.

Three pre-existing tests pinned the wrong codes, each locking in the defect
being fixed. All corrected with the deserializer cite inline, and one renamed
to say what it now asserts. Strengthened, not weakened.

Three guards neutered by line number -- handler_tags.go:77,
certificates.go:279, certificate_lifecycle.go:170 -- each compiles and fails
its own tests.

acm 20 findings -> 7: the 6 unreachable ResourceNotFoundException sites plus
the one landmined InvalidStateException site.

Closes gopherstack-bzyl

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Filed from a per-service audit row count without checking for a closed issue
covering those services. Landmined findings still appear in audit output by
design, so a nonzero row count is not evidence of untriaged work.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
gopherstack-2i0c and gopherstack-39ip, both the campaign's third bug shape:
a confirmed mismatch with no remedy anyone could evidence. Both stay
landmined. The work was answering the specific evidence question each issue
named, so the next pass does not redo it.

memorydb CreateCluster emits SnapshotNotFoundFault for an unknown
SnapshotName. Its declared set has a not-found fault for every OTHER
referenced resource -- ACLNotFoundFault, ParameterGroupNotFoundFault,
SubnetGroupNotFoundFault, MultiRegionClusterNotFoundFault -- but none for the
snapshot. The open question was whether that asymmetry is a real AWS
modelling choice or an artifact. It is real: the pinned
memorydb@v1.36.4 deserializer and the live API_CreateCluster.html Errors
section carry the identical 18 codes, so model staleness is ruled out.
SnapshotNotFoundFault is a genuine memorydb code declared by CopySnapshot,
DeleteSnapshot, DescribeSnapshots, ListTags, TagResource and UntagResource --
right code, wrong op. What is still missing is any doc sentence saying what
CreateCluster actually returns for an unresolvable SnapshotName;
InvalidParameterValueException's doc is the generic "The specified parameter
value is not valid", which is a guess, not a match. So no swap.

elb DeleteLoadBalancerPolicy emits PolicyNotFound and declares exactly
InvalidConfigurationRequest and LoadBalancerNotFound. The prior pass declined
to copy DeleteLoadBalancer's idempotent-success fix because that one rests on
a doc sentence this op lacks; that negative claim is now verified rather than
inherited. api_op_DeleteLoadBalancer.go:19-20 reads "If the load balancer does
not exist or has already been deleted, the call to DeleteLoadBalancer still
succeeds." DeleteLoadBalancerPolicy's entire doc is "Deletes the specified
policy from the specified load balancer. This policy must not be enabled for
any listeners." -- no equivalent, in the pinned comment or the live API
reference. PolicyNotFoundException exists in the module and is semantically
exact, but is declared only by DescribeLoadBalancerPolicies,
SetLoadBalancerPoliciesForBackendServer and SetLoadBalancerPoliciesOfListener.
Of the two declared codes, LoadBalancerNotFound names the wrong resource and
InvalidConfigurationRequest is a stretch. So no swap.

Comments only: `git diff -U0` on the .go files shows no changed non-comment
line. No behaviour changed, which is why the two tests that deliberately pin
the current wrong codes -- TestErrCode_CreateCluster_SnapshotNotFound and
TestPolicyNotFoundReturns400 -- are correctly untouched. Both audit findings
still report at the same lines.

Closes gopherstack-2i0c
Closes gopherstack-39ip

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…t double-counted

gopherstack-s0dw. Site grouping (gopherstack-2evc) reports a shared helper's
finding twice: once as a definition-site row -- the constructor's own
sentinel return, reached by one-hop recursion from every caller -- and again
as one call-site row per caller. cloudfront showed 29 rows for 27 distinct
(op, code) pairs. A reader summing op counts sizes the population wrong.

Measured before choosing a remedy, by AST function attribution rather than
by matching on code text: a definition-site row duplicates call-site rows
only when it sits inside the body of the very function those call sites
invoke. Same-code-different-function coincidences are not duplicates, and a
naive per-code check would wrongly fold them together.

Corpus-wide the shape is rare and structurally consistent. 37 definition-site
rows across 6 services (ssm 23, stepfunctions 4, kms 3, iot 3, acm 3,
cloudfront 1). In 33 the definition-site op set equals the union of the
matching call-site rows; in 4 it is a proper subset, caused by a caller that
reaches the constructor only at hop 1, so finding its sentinel return would
exceed maxEmitHop.

The subset relation always holds in the same direction -- definition-site
ops are a subset of the call-site union, never the reverse -- which is
structurally guaranteed: an op reaches the constructor's own sentinel return
only by having made the classified call first. Verified independently across
all 37 tagged rows: every tag's claim holds, none names a function with no
matching call-site rows, and no tagged row carries an op the call-site union
lacks.

So the remedy annotates rather than removes. A definition-site row now
carries "-- ROLLUP: same ops as <fn>'s own call-site row(s) elsewhere in this
list -- do not add to totals", or "-- PARTIAL ROLLUP: a subset of ..." for
the four subset cases. Removing the row would have been the other option, but
even in the subset cases it loses no ops, and keeping it preserves the
sentinel-reference evidence a reader may want.

Presentation only. Set-diff against the pre-change binary over
(service, section, op, code, file:line) triples: 473 before, 473 after,
comm -3 empty in both directions. Headline counts unchanged at 341 class A,
10 orphan, 70 coverage warnings.

rollupTag neutered by early return at report.go:399: compiles, fails both
TestPrintSiteGroups_RollupTag_ExactMatch and
TestPrintSiteGroups_RollupTag_PartialSubset, and drops all 37 tags from the
corpus.

Closes gopherstack-s0dw

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
gopherstack-3hov. The seeded p-FullAWSAccess policy took its ARN from
policyARN, which keys to the caller's management account. That policy is
AWS-owned, not account-owned, so real AWS gives it the "aws" authority with
no account and no org segment.

Settled by botocore's own PolicyArn pattern, the shape behind
PolicySummary$Arn (aws-sdk-go@v1.55.8
models/apis/organizations/2016-11-28/api-2.json). It offers exactly two
alternatives and nothing else:

  ^(arn:aws:organizations::\d{12}:policy\/o-[a-z0-9]{10,32}\/[0-9a-z_]+\/p-[0-9a-z]{10,32})
  |(arn:aws:organizations::aws:policy\/[0-9a-z_]+\/p-[0-9a-zA-Z_]{10,128})

The prior pass declined to special-case this for want of corroboration. The
pattern is the corroboration, and the repo already encodes the same authority
elsewhere -- services/ssoadmin/application_providers.go uses
arn:aws:sso::aws:applicationProvider/..., and services/ram/store.go:142 uses
arn:aws:ram::aws:permission/....

Scoped to the seeded policy only. New awsManagedPolicyARN builds the AWS-owned
shape; policyARN keeps building the customer-owned one and CreatePolicy still
uses it, since a customer policy correctly carries the account authority. A
blanket change would have been wrong.

Blast radius checked before editing rather than after. No map is keyed by the
ARN -- policyKeyFn keys on PolicySummary.ID -- and DescribePolicy takes a
policyID. The one place that compares ARNs, resourceIDForARNLocked in tags.go,
compares the input against the STORED PolicySummary.ARN field, so it resolves
whatever format is stored and stays correct across the change.
ListPolicies, ListPoliciesForTarget and handler_policies.go only echo the
stored value.

Snapshot format is unaffected: this is a value change, not a shape change, so
organizationsSnapshotVersion stays at 1 and no user snapshot is discarded. A
snapshot taken before this change restores with the old account-keyed string,
which is cosmetically inconsistent but not functionally broken, for the same
reason the lookup analysis above holds.

TestDefaultFullAWSAccessPolicy_ARN_ViaHandler asserts the ARN through the
handler. Neutered by reverting policies.go:128 to policyARN: compiles, and
fails with
  expected: "arn:aws:organizations::aws:policy/SERVICE_CONTROL_POLICY/p-FullAWSAccess"
  actual  : "arn:aws:organizations::123456789012:policy/o-.../SERVICE_CONTROL_POLICY/p-FullAWSAccess"

Not an authorization change: an ARN string echoed on one policy, with no
policy attachment, effective-policy evaluation or enforcement path touched.

Closes gopherstack-3hov

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ignoring it

gopherstack-3qel. ListDeploymentsInput models externalId
(codedeploy@v1.38.4 api_op_ListDeployments.go:51, "The unique ID of an
external resource for returning deployments linked to the external
resource"), but gopherstack's wire struct never declared it. A client could
pass the filter and get every deployment back, with no error and no way to
tell the filter had been dropped.

The prior pass left this unfixed because nothing here can populate the field.
That much holds, and is now verified rather than assumed: grepping every
*Input struct in the pinned module, only two operations carry ExternalId --
ListDeployments (the filter) and DeleteResourcesByExternalId (cleanup).
CreateDeploymentInput has zero occurrences.

Its framing was too narrow, though. DeploymentInfo.ExternalId's doc
(types/types.go:418) reads "The unique ID for an external resource (for
example, a CloudFormation stack ID) that is linked to this deployment" --
so the association is set by AWS-side integrations generally, not the
CodePipeline output the issue named. The conclusion is unchanged: no public
API call in this SDK can set it.

That makes parsing the filter the right fix on its own, with no population
path. Every deployment's ExternalID stays empty, so a non-empty filter
correctly returns nothing -- which is what real AWS returns for a deployment
no external resource is linked to. Silently dropping a modelled filter is the
worse failure, because a client cannot distinguish "no matches" from "filter
ignored".

Adding the sixth condition pushed ListDeployments past gocognit's threshold
(22 > 20). This repo bans gocognit/cyclop/funlen nolints, so the predicate is
extracted into deploymentMatchesFilter rather than suppressed. The extraction
is behaviour-preserving: same conditions in the same order, `continue`
becoming `return false`.

Snapshot format unaffected. Deployment is persisted directly via
store.Table[Deployment], and ExternalID is additive with omitempty, so an
older snapshot decodes it to "" -- which is the only value it can correctly
hold. No codedeploySnapshotVersion bump, so no user snapshot is discarded.

TestDeployments_ListExternalIDFilter covers both halves independently. Each
neutered by line number, and each compiles and fails on its own:
deployments.go:107 (the comparison) and handler_deployments.go:258 (threading
the parsed field into the filter) both produce
  "[d-...]" should have 0 item(s), but has 1

Closes gopherstack-3qel

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…e dispatch-tracer gap

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ared allowlist

gopherstack-oshm. Both doc comments claimed the two genericProtocolCodes
lists were identical; errtargetaudit carried InternalServerException and
errcodeaudit did not. The lists are now genuinely identical at 40 entries
each, reconciled by REMOVING the entry rather than adding it.

The evidence points that way, and it points hard. gopherstack-q9bs set the
standard an entry must meet: it earns its place from the tool's brief, or
from a service whose docs describe returning the code while its model
declares no such shape -- which is how ValidationException survived, on kms's
docs-2.json. Searching every vendored aws-sdk-go@v1.55.8 service model for
that pattern finds zero hits for InternalServerException, against two for
ValidationException. Meanwhile 51 of the pinned SDK's 166 modules declare it
as a per-op typed exception, which is evidence of a modeled exception rather
than a pre-dispatch protocol fault.

The entry was also suppressing real findings. errcodeaudit goes 349 -> 352:
services/forecast/handler.go:606 (confident -- single resolved module, absent
from its deserializer set) and services/personalize/handler.go:230,268.
Neither personalize@v1.50.4 nor personalizeruntime declares ANY server-fault
type, so those three emissions are genuine mismatches that the allowlist was
hiding.

errtargetaudit's corpus is unchanged at 341/10/70, because gopherstack-udkm
already made its lookup module-conditional -- the allowlist is consulted only
where the service models the code nowhere, so removing an entry that no
affected service reaches changes nothing there.

A pre-existing test required the opposite and had to be replaced, not
adjusted. TestGenericProtocolCodes_InternalServerException asserted the entry
must be present, justified by "the 90-false-positive mgn case" -- a premise
gopherstack-udkm had already disproved, since mgn@v1.48.4 declares
InternalServerException in types/errors.go and in 3 deserializeOpError
switches, making those emissions class A findings. The mgn concern was
actually resolved by the module-conditional check, not by the allowlist entry.
The replacement asserts absence and records why.

TestScanServiceDir_PersonalizeInternalServerExceptionReported scans the real
services/personalize tree and requires the findings to appear. Neutered by
re-adding the entry to errcodeaudit's map: compiles, and fails with
"personalize@v1.50.4 declares no server-fault type at all, so its
InternalServerException emissions must be reported, not suppressed".

Entries still resting on sibling-analogy rather than a citation, recorded but
not changed: ThrottlingException, TooManyRequestsException,
RequestLimitExceeded, AccessDeniedException, UnauthorizedException,
ExpiredTokenException, and the InternalError/InternalServerError/
ServiceUnavailable/ServiceUnavailableException/ServerException/
ServiceException cluster.

Closes gopherstack-oshm

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…lares

gopherstack-fm1e and gopherstack-l81f, worked as one cluster.

rds ModifyActivityStream emitted DBClusterNotFoundFault, which it does not
declare. Its declared set in rds@v1.124.1 is DBInstanceNotFound,
InvalidDBInstanceState and ResourceNotFoundFault.

The choice between DBInstanceNotFound and ResourceNotFoundFault is settled by
a contrast rather than by the op's own doc alone. StartActivityStream and
StopActivityStream BOTH declare DBClusterNotFoundFault; ModifyActivityStream
alone does not. AWS omitted it deliberately, which matches the op's
ResourceArn doc -- "The Amazon Resource Name (ARN) of the RDS for Oracle or
Microsoft SQL Server DB instance. For example,
arn:aws:rds:us-east-1:12345667890:db:my-orcl-db" -- an instance ARN with an
instance-shaped example. So the target is never ambiguous here, and the
generic ResourceNotFoundFault is not needed. DBInstanceNotFoundFault's own
doc is a word-for-word fit: "DBInstanceIdentifier doesn't refer to an
existing DB instance."

ErrInstanceNotFound already exists and already carries the right wire string,
so no sentinel edit was needed -- unlike the eventbridge and stepfunctions
fixes, where the sentinel's own errors.New literal named the invented code.

TestActivityStream_ClusterNotFound asserted DBClusterNotFound for all three
of Start, Stop and Modify. Correct for the first two, wrong for the third.
Converted to a per-case table that asserts the expected code AND two absent
codes for each op -- strictly more coverage than before, not a weakened
assertion. Neutered at activity_stream.go:76: compiles, and fails with the
response body showing DBClusterNotFoundFault where DBInstanceNotFound was
expected.

The lookup underneath is still cluster-scoped, so the emitted code and the
resolution now disagree. That needs activity-stream state modelled on
DBInstance, which is a model change rather than an error-code one; filed
separately rather than half-done here.

codedeploy's five delete and deregister ops are confirmed to have no safe
remedy, and no source changed. Each declared set was re-derived individually:
DeleteApplication, DeleteDeploymentGroup, DeleteDeploymentConfig and
DeregisterOnPremisesInstance declare only name-required, invalid-name,
invalid-role, in-use and invalid-operation codes -- no not-found among them,
and InvalidOperationException's doc ("An invalid operation was detected")
does not fit a missing resource. The live API reference pages carry only the
"HTTP 200 response with an empty HTTP body" boilerplate, which this campaign
has established is response-shape prose and NOT idempotency evidence --
codepipeline's DisableStageTransition carries it verbatim and still errors.
The existing landmine comments were already accurate and are left untouched;
PARITY.md records the independent re-derivation so a later pass does not
repeat it.

Closes gopherstack-fm1e
Closes gopherstack-l81f

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
gopherstack-sgbw. forecast resolved 6 of 63 ops and comprehend 27 of 85, not
because either service is thin -- both dispatch every ground-truth op -- but
because three dispatch shapes were invisible to the tracer. 115 implemented
operations were being silently skipped.

  if/else-if chains. collectSwitchDispatchEntries walked only *ast.SwitchStmt,
  so forecast's `if action == "X"` chain (handler.go:131-153) was unseen. New
  collectIfChainDispatchEntries mirrors the switch collector.

  Index-assignment map population. The map-literal collector walked only
  *ast.CompositeLit, so comprehend's ops["X"] = ... statements
  (handler.go:266-307) were unseen even though its map IS func-typed. New
  collectIndexAssignDispatchEntries handles assignment-populated maps,
  including range loops over spec slices.

  Struct-valued dispatch maps behind a shared executor. isDispatchMapType
  required a func-typed map value, so forecast's map[string]operationSpec was
  invisible by construction -- and its keys never exist as literals, being
  built as "Create"+base inside addCRUD. collectPopulatorHelperKeys binds each
  call site's literal arguments and evaluates the concatenation;
  collectSharedExecutorFallback then binds the recovered keys to execute().

Two design calls worth recording. Concatenated keys are EVALUATED, not
guessed: base is bound to a real literal at every call site, so this is
substitution rather than convention. The cost is that conditionals inside the
helper are ignored, yielding a few never-looked-up candidate keys, which is
harmless because unmatched keys are never consulted. And the shared-executor
fallback is deliberately scoped to the functions passed to
service.HandleTarget, not the whole package, so ~50 recovered forecast keys
cannot bind to an unrelated backend method that happens to share the
comma-ok-lookup shape.

findHandlersByNameFold was deliberately NOT widened. Its over-broad scan
already produces accidental resolutions -- forecast's DeleteResourceTree
resolves only because a backend method happens to share the op name -- and
leaning on it would make coverage look better while meaning less.

  forecast     6/63  -> 63/63
  comprehend  27/85  -> 85/85

Set-diff over (service, section, op, code, file:line) triples against a
binary built from the pre-change tree: 465 before, 686 after, 0 removed, 221
added -- 217 forecast, 4 comprehend, and nothing in the other 158 services.
Class A 335 -> 464; coverage warnings 70 -> 68 as forecast's and comprehend's
implausible-resolution warnings clear.

The forecast additions are the funnel shape this was expected to produce --
everything routes through execute() and its one-hop backend calls -- and the
existing SHARED PLUMBING and ROLLUP tagging from gopherstack-2evc and
gopherstack-s0dw picks them up correctly. Two comprehend additions are a real
find rather than plumbing: CreateDataset and CreateEndpoint emit
KmsKeyValidationException from the generic CreateResource, and while 14
comprehend ops declare that code, neither of those two does.

All four mechanisms neutered individually by early return, each compiling and
each failing its own test: the if-chain and index-assign collectors drop
forecast to 61/63, index-assign drops comprehend to 27/85, and the populator
helper drops forecast to 10/63.

cloudwatchlogs, flagged suspect when this was filed, is confirmed unaffected
at 119/230 both before and after -- a separate root cause, still open.

Closes gopherstack-sgbw

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
gopherstack-k3ww and gopherstack-jyi3.

k3ww turned on a version question the issue could not settle locally, since
only kms@v1.55.4 was cached. Downloading v1.54.0 answers it: its
deserializeOpErrorDescribeKey declares DependencyTimeoutException,
InvalidArnException, KMSInternalException and NotFoundException -- byte
identical to v1.55.4, with no InvalidGrantTokenException in either. Fifteen
sibling ops DO declare it in both versions, and DescribeKey is in neither
list. So this is not SDK drift: the 2026-07-12 PARITY.md entry that added
grant-token validation here cited v1.54.0 as declaring the code, and that
citation was simply wrong.

The feature is therefore reverted, its test with it. DescribeKey no longer
calls validateGrantTokenPresence. GrantTokens stays on the input struct
because the field is real in both versions and must round-trip; it is just
not validated, since DescribeKey's declared set gives it nothing to reject
with. The helper remains in use by DeriveSharedSecret, Sign, Verify,
GetPublicKey, GenerateMac and VerifyMac -- all six of which DO declare
InvalidGrantTokenException -- so the revert is surgical rather than a
removal of the mechanism.

TestDescribeKey_GrantTokens_Validation asserted a bogus token is rejected and
is replaced by TestDescribeKey_GrantTokens_NotValidated asserting it is
accepted, with the version evidence recorded inline. The wire-shape test that
pins GrantTokens round-tripping is untouched, so no coverage is lost --
only the assertion that a real client could receive a code AWS never sends.
Neutered by re-adding the call before keyToMetadata: compiles, and fails with
"InvalidGrantTokenException: grant token not found".

jyi3 is comment-only. CreateGrant declares neither UnsupportedOperationException
nor ValidationException, so gopherstack-5rjn's CreateKey remedy does not
transfer -- there is no code to swap to, which is the gopherstack-hdvu rule
holding again. But GrantOperation is a plain enum-constrained string shape
with 17 values (api-2.json), a single-field structural constraint rather than
the cross-field business rule that made CreateKey's KeySpec/KeyUsage pairing
need its own declared code. That places it in gopherstack-q9bs's class, where
ValidationException is a genuine pre-dispatch KMS wire fault, so ErrValidation
is kept and the reasoning is now recorded at the site. The blanket 32-site
sweep in 9052099 had removed the old landmine without leaving a per-site
justification.

Neither change touches grant evaluation or key authorization: jyi3 is enum
membership only, and k3ww removes a check on a read-only metadata operation
that makes no authorization decision. Full go test ./services/... run anyway
given the surface: exit 0, no failures.

Closes gopherstack-k3ww
Closes gopherstack-jyi3

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…ields

TestSnapshotVersionGuard was failing on this branch. Two backendSnapshot
field additions landed without the golden being refreshed:

  Deployment.ExternalID  services/codedeploy, commit 76ac705
  Addon.Namespace        services/eks, this branch

The codedeploy one is mine. I accepted "additive with omitempty, no version
bump needed" and committed it without running pkgs/persistence, so the branch
has been red since. Caught while verifying the eks change, which hit the same
guard.

Both are genuinely additive and neither needs a version bump, which the guard
itself says: "every old field is still present unchanged, so the diff is
additive only". Confirmed by diffing the golden's version numbers before and
after -update -- no service's version changed, and the only edits are the two
inserted field lines. So no user snapshot is discarded, which is what a bump
would have done.

Refreshed with -update rather than hand-edited.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…e-system

gopherstack-gala. CreateAddonInput.NamespaceConfig was unwired, so
replaceAddonPodIdentityAssociationsLocked installed every addon-owned pod
identity association into kube-system. Correct for the AWS-managed add-ons,
wrong in general.

The SDK supports the full round trip, so all three pieces are done rather
than just the wiring. eks@v1.90.4:

  CreateAddonInput.NamespaceConfig *types.AddonNamespaceConfigRequest --
  "If specified, this will override the default namespace for the addon."
  Addon.NamespaceConfig *AddonNamespaceConfigResponse (types.go:143), echoed
  on CreateAddon and DescribeAddon output.
  UpdateAddonInput has ZERO occurrences of the field -- namespace is
  immutable after creation on the real API, so the emulator ignores an
  inbound key there rather than accepting it.

AddonInfo.DefaultNamespace (types.go:209) confirms the default is per-addon
documentation rather than a universal constant, so kube-system is retained
as the fallback when NamespaceConfig is absent -- correct for the add-ons
this emulator lists, and what the existing tests encode.

Snapshot handling is additive: Addon gains Namespace with omitempty, the
registry marshals tables generically, and no eksSnapshotVersion bump is
needed. The shared golden is refreshed in its own commit, since it also had
to repair an earlier miss of mine in codedeploy.

CreateAddon's backend signature gained a namespace parameter, so 15
pre-existing call sites across five test files pass "". Verified by diff that
no assertion in any pre-existing test changed -- call-site churn only.

Two guards neutered by line number, each compiling. addons.go:305 (the
namespace selection) fails
TestAddon_NamespaceConfig_PodIdentityAssociationUsesCustomNamespace with
expected "efs-csi", actual "kube-system". handler_addons.go:160 (the wire
parse) fails that test plus the round-trip and immutability tests. Two
further tests pin the preserved kube-system default and pass unmodified.

Not an authorization change: this selects which namespace an association is
installed into, not how associations or trust policies resolve.

Closes gopherstack-gala

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
…fects

gopherstack-ejfu. Commit adbe691 made 129 findings visible in these two
services for the first time. Triaged; none is a defect. Documentation only,
no source changed.

comprehend, 3 findings over 2 decision sites. store.go:230 and :233 are one
shared KMS check applied twice inside CreateResource, the single constructor
for all five resource types. It reads values["ModelKmsKeyId"] and
values["VolumeKmsKeyId"], but comprehend@v1.43.4's CreateDatasetInput and
CreateEndpointInput declare neither field -- CreateEndpoint's only mention of
ModelKmsKeyId is prose inside DataAccessRoleArn's doc comment, not a member.
So a real client can never populate them, the value is always "", and
validateKmsKeyID("") returns nil by design. The check is correctly required
for the other three resource specs, which do carry the fields.

I filed this issue calling that pair "a real class A mismatch" on the strength
of the declared-set diff alone -- 14 comprehend ops declare
KmsKeyValidationException and these two do not. That much is true and is not
the point: the guard cannot fire, so there is nothing to emit. This is the
gopherstack-03rb shape, not a live mismatch.

handler_detection.go:542 is unreachable for the same class of reason:
BatchDetectDominantLanguage dispatches as h.batch(h.detectDominantLanguage,
nil), and h.batch gates the language-code check behind
`if allowedLanguages != nil`. Consistent with DetectDominantLanguage having no
LanguageCode field at all.

forecast, 217 rows over 127 distinct (op, code) pairs and 11 genuine sites.
Every operationSpec.mode is a constant fixed at map-construction time, and
h.execute switches on it to reach each backend method from exactly one call
site. So the counts are arithmetic, not evidence: InvalidNextTokenException's
42 findings are exactly the non-list ops, ResourceAlreadyExistsException's 41
exactly the non-create ops, against an h.ops of 55 entries (create 14,
describe 14, list 13, delete 13, update 1). The tracer treats every switch
branch as reachable from every op.

InvalidNextTokenException got the closest look, since a pagination guard
firing on unpaginated ops would have been a real defect. It is not: the mode
field genuinely gates it, and the 13 real List ops all declare it.

That makes forecast a fourth variant of the no-defect shape, distinct from
mgn's shared plumbing, ssm's idiomatic guards and cloudfront's absent wire
field: unreachable-given-the-dispatch-table.

Three of the 14 raw site rows are a tool artifact rather than a finding --
store.go:189-191 are Go builtin delete(map, key) calls resolved to the
backend's same-named delete method. Filed separately as gopherstack-bfb3;
measured at exactly 4 rows corpus-wide, all here.

Closes gopherstack-ejfu

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
… entry

gopherstack-pfyr. The finding itself was already settled as a class-1 false
positive -- BatchGetCommitsError.errorCode is document data inside a 200
response, so it is not constrained by the operation's declared exception list,
and BatchGetCommits declares neither commit-not-found code. The open question
was whether the VALUE was right, and the issue recorded no evidence either
way because AWS never enumerates that field's legal values. It still does not.

The evidence turned out to be shape typing rather than doc text. In botocore's
codecommit api-2.json:

  GetCommitInput.commitId        shape ObjectId
  BatchGetCommitsError.commitId  shape ObjectId
  CreateBranchInput.commitId     shape CommitId

ObjectId is a raw full-SHA lookup with no resolution step; CommitId is the
specifier-resolution shape used by ops that accept a branch name or tag. So
the per-entry field is typed identically to GetCommit's input and distinctly
from the specifier ops.

The declared sets line up with that split exactly. GetCommit is the ONLY
operation in the module declaring CommitIdDoesNotExistException; eighteen
others declare CommitDoesNotExistException, and every one of them takes a
specifier. The doc texts say the same thing: "The specified commit ID does not
exist" against "The specified commit does not exist or no commit was
specified, and the specified repository has no default branch" -- that second
clause is a default-branch fallback, which only makes sense for a specifier.

So a BatchGetCommits entry for an unresolvable SHA carries GetCommit's code,
not CreateBranch's. This is the same confusion gopherstack-8pe4 fixed on
GetCommit itself, which is what the issue suspected.

No pre-existing test asserted this field, so nothing was weakened.
TestHandler_BatchGetCommits_ErrorCodeIsCommitIdDoesNotExist neutered at
commits.go:188: compiles, and fails with expected
"CommitIdDoesNotExistException", actual "CommitDoesNotExistException".

Closes gopherstack-pfyr

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
gopherstack-bfb3. callExprEmissions matched a call's callee name against
cls.Funcs, a name-keyed map built from any package FuncDecl returning only
error -- methods included. services/forecast declares
InMemoryBackend.delete, so every bare delete(map, key) inside that method's
own body matched cls.Funcs["delete"] and was reported as an emission site
attributing ResourceNotFoundException.

The discriminator is a fact about Go rather than a heuristic, which matters
because the name alone cannot decide it: forecast's real delete IS reached as
a bare identifier from the dispatch table. A method can only be invoked
through a selector or a method value, never as a bare unqualified identifier.
So a bare call to a predeclared function name resolves to real package code
only if the package declares a RECEIVER-LESS func of that name, which is the
only way to shadow the builtin at package scope. bareBuiltinCall checks
exactly that, using idx.Funcs and idx.Methods, which already carried the
receiver split -- nothing new is computed. Selector calls are untouched, and
the whole predeclared set is handled rather than just delete.

Set-diff across all 160 services: 0 added, 42 removed, and every removed row
is one of 14 ops at services/forecast/store.go:189, :190 or :191 -- the three
builtin calls. Nothing else in the corpus changed. Headline counts stay at
464 class A, 10 orphan, 68 coverage warnings, because the phantom rows were
extra evidence sites on findings that already existed rather than findings of
their own, and forecast still resolves 63/63.

The genuine attribution is preserved: handler.go:207 is h.Backend.delete(...),
a selector call, and still reports. So does the real sentinel raise at
store.go:181, still ROLLUP-tagged.

Neutered by early-returning false from bareBuiltinCall: compiles, fails
TestScan_BuiltinDeleteNotConstructorClassifier with expected 1 actual 3, and
the corpus goes back to 4 delete-tagged rows from 1.

Correcting my own filing: the issue said "exactly 4 rows corpus-wide, all the
delete builtin". Three are phantom; the fourth, handler.go:207, is the real
selector call and was always correctly attributed. The agent caught that and
was right.

Closes gopherstack-bfb3

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HuRbN6tdkW27u2PFP46N1m
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant