Conversation
…t + workflow Self-contained kickoff for a fresh session starting Phase 4 (LocalStack Pro cross-service interconnectivity parity). Captures: the LocalStack-parity north star, phase status (Phase 3 datalayer done but on unmerged parity-sweep-3/#2382), Phase 4 scope, and the per-service parity-sweep workflow (<=2 sonnet agents, scoped gates, PARITY.md manifests, no-stub rule, cli.go interconnect as main-thread work). Also persisted via bd remember (parity-north-star-phases, parity-sweep-workflow). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…s RoleDetail RoleDetail wire shape omitted instance-profile membership entirely; populate from backend instanceProfiles with nested role resolution. +table test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… bypass ErrInvalidDelaySeconds missing from errCodeLookup surfaced as 500 InternalError instead of 400 InvalidParameterValue. SendMessageBatch entries bypassed empty-body, DelaySeconds range, and message-attribute validation. +table tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Verified gopherstack-gvw is a false-positive gap (TagResource/BatchGetSecretValue do not return LimitExceededException per AWS docs); downgraded to ok. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ack name ExpiredKeyMaterial/KeyMaterialUnavailable had no error-table entry (fell to 500); add ExpiredImportTokenException(400)/KeyUnavailableException(500). Fallback exception name InternalServiceError is not a real KMS type; use KMSInternalException so client errors.As matches. +regression test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eamRetention AWS requires strict inequality; equal value returned idempotent 200 instead of InvalidArgumentException. Corrects a rationalized-bug test asserting wrong behavior. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Emitted fabricated top-level *DestinationDescriptions lists that the real SDK deserializer discards -> clients got zero destinations back. Real API wraps all types in a single Destinations list of DestinationDescription. Also fix DeliveryStreamEncryptionConfiguration key and nest Redshift fields under CopyCommand (+S3Configuration). New PARITY.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Token Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reject datapoints >2 weeks past or >2 hours future with InvalidParameterValue, per AWS docs. Closes gopherstack-pyv. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ad of 400 Unknown capacity-provider name failed the whole request; AWS returns per-item Failures[] with reason MISSING, matching other Describe ops. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CreateDBShardGroup/Integration/CustomDBEngineVersion families (+Delete/Modify/Reboot) wrapped fields one XML level too deep; real SDK expects them flat under XxxResult, so clients got zero-valued structs incl. identifiers. Fix wrong CDBEV description tag. +regression tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CustomerId (Marketplace SaaS) was absent from all ApiKey shapes -> dropped on create, never returned, unpatchable. Also correct a misleading UpdateUsage PATCH-path doc/test. +test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…teKey+target) Quick-create shortcut was unimplemented -> requests silently produced an API with no route/integration/stage. Add RouteKey/Target to Create/UpdateApi inputs, auto-provision managed integration/route/stage, add missing ApiGatewayManaged field. +6 tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Set/Refactor/Template/Scan DeleteStackSet unknown name now idempotent; DescribeStackRefactor unknown ID returns StackRefactorNotFound instead of empty 200; GeneratedTemplate/ResourceScan not-found codes were wrongly suffixed; ListResourceScan* swallowed not-found -> empty 200. +audit tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…integration gap noted Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New CloudConnector op family was SDK-bumped in but excluded from dispatch. Implement Create/Delete/Get/List/Update/ValidateCloudConnector end-to-end with real store-backed state, validation, persistence. +table tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…version checks Emit required HealthCheckVersion; honor CreateHostedZone DelegationSetId (was dropped -> hardcoded nameservers); add optimistic version checks + in-use/empty guards for CIDR collections and reusable delegation sets; count real linked zones. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d/ResendConfirmationCode Both returned UserNotFoundException for unknown users regardless of the client's PreventUserExistenceErrors=ENABLED setting, defeating anti-enumeration masking. Return masked success shape instead. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…DryRun CreateDomain/UpdateDomainConfig used deprecated IamIdentityCenterOptions wire shape -> client options silently no-op'd; emit required DomainId; ListDomainNames emitted EngineVersion instead of EngineType; UpdateDomainConfig ignored DryRun. New PARITY.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ter-aliasing races ON_DEMAND triggers stay CREATED and now actually fire job/crawler runs (was a stub); honor StartOnCreation + CrawlerName; enforce PutResourcePolicy PolicyExists/HashCondition and DeleteResourcePolicy hash; clone CreateSchema + integration-property returns to fix unsynchronized read races. +regression tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…egationSetId arg Route53 parity audit split CreateHostedZone to accept delegationSetId; scoped per-service gate missed this cross-package caller. Pass empty (CFN path unspecified). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…onfigureLogs, config drop RotateChannelCredentials routed POST .../ingest_endpoints/credentials vs real PUT .../credentials (unreachable) + regenerated both endpoints vs only creds[0]; ConfigureLogs discarded log-group params (no-op); Create/UpdateOriginEndpoint dropped authorization/ hls/dash/cmaf/mssPackage config; CreatedAt missing on Channel/OriginEndpoint. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
TerminologyData.File + Document.Content are base64 blobs on wire but handled as literal text (corruption both directions); text-translation job started IN_PROGRESS and never advanced (DescribeTextTranslationJob poll hangs) -> SUBMITTED + step-advance; AppliedTerminologies always fabricated empty; CSV header row treated as term pair (silent mangling); Directionality discarded. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… Duration unit, V2 union
ColumnMetadata wire key columnSize vs real length (Length always 0 client-side);
DescribeTable TableName nested object vs plain string (dropped); Duration emitted ms vs
real nanoseconds (1e6x understated); GetStatementResultV2 Records []string vs QueryRecords
union {CSVRecords} (UnknownUnionMember deserialize fail). New PARITY.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, error code
ARN/inference-profile modelId (embedded slash, %2F-decoded) cut at first slash ->
wrong response envelope served; CountTokens expected top-level prompt/messages vs real
{input:{invokeModel:{body}|converse:{messages}}} union (content-independent estimate);
InternalFailure vs real InternalServerException (9 sites, typed-exception match fails).
New PARITY.md. +tests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…or messages Six validation sentinels baked 'ValidationException: ' into the message text, duplicating the __type envelope field -> real SDK client saw 'ValidationException: ValidationException: ...'. New PARITY.md (service otherwise in good shape, verified via real SDK client probe). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ce, delete response VersionConflictException vs real ConflictException; shadow version reset to 1 after delete+recreate (real keeps incrementing -> soft-delete tombstone); delete response leaked pre-delete state vs real empty doc; oversized (>8KB) doc wrong error vs RequestEntityTooLargeException; real DeleteConnection path unreachable (prior audit swept under /_admin); MethodNotAllowed placeholder string. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eption, honor poll interval maxIdentifierLength 2048 vs real 128 (botocore Identifier shape); removed fabricated PayloadTooLargeException dead const (not in real exception set); Next-Poll-Interval clamped to 30s default, silently ignoring sessions declaring 15-29s. New PARITY.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CreateMonitor/CreateProbe: packetSize range (56-8500) never validated; protocol stored non-canonical (tcp vs TCP). UpdateProbe was validation no-op (garbage protocol/port/ packetSize/state persisted with 200) -> added field validation + TCP-requires-port invariant on effective post-update values. New PARITY.md. +route-matcher/matrix tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tag/Untag/ListTagsForResource accepted any ARN (silently r/w orphaned tag map vs real ResourceNotFoundException); List* never validated NextToken (malformed decoded to page 0 vs InvalidNextTokenException). New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…wire markers, force disconnect PostToConnection dropped frames on full downstream buffer but returned 200 (real LimitExceededException 429); Gone/PayloadTooLarge missing X-Amzn-Errortype+__type markers (client errors.As never matched -> generic); DeleteConnection/PruneIdle never closed the downstream channel, leaking apigatewayv2 writer goroutine + socket. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, typeHint FormatRecordsAs unimplemented (field absent) -> JSON format returns formattedRecords and omits records/columnMetadata; ColumnMetadata 2-field stub vs real 14-field shape, populated via SQLite type-affinity->JDBC codes + driver Nullable/DecimalSize introspection; SqlParameter.typeHint silently dropped. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Model ValidationException nonexistent in CloudControl -> InvalidRequestException; Get/Cancel ResourceRequestStatus on unknown token returned ResourceNotFound vs real RequestTokenNotFoundException; cancel of non-terminal request -> ConcurrentModificationException (500) not 400; ResourceNotFound/AlreadyExists were 404/409 vs real 400; ProgressEvent.ResourceModel field missing (CDK/TF read it to skip GetResource). New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lass enum value) isValidStorageClass accepted STANDARD, which belongs to the UploadAvailability enum, not StorageClass (real StorageClass enum = TEMPORAL only) -> PutObject echoed an impossible value. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ider Entire service used fictitious RESTful GET/PUT/DELETE paths + query params vs real Account Management protocol (POST /getContactInformation etc., all params in JSON body) -> every op 404'd against a real SDK client. Also had no provider.go (dead code, unreachable in server). Rewrote handler; added provider.go; X-Amzn-Errortype header + real error codes (InternalServerException/Conflict/AccessDenied/TooManyRequests); required-field validation on PutContactInformation; AccountId enforced on primary-email ops; removed fictitious DescribeAccount/CloseAccount; added real GetAccountInformation. New PARITY.md. Rewrote tests (consolidated banned parity_* names). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
services/account was rewritten to the real wire protocol but had no cli.go registration, so it was unreachable. Add import + provider-list entry. Whole-repo build green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rs, validate create GetLifecyclePolicies read list query params (policyIds etc.) via Values.Get -> only first value (SDK repeats key per value); resourceTypes/targetTags/tagsToAdd filters accepted but ignored (no-op) -> real ANY-of matching; PolicySummary missing PolicyType field; CreateLifecyclePolicy skipped required ExecutionRoleArn/Description validation. New PARITY.md. +tests (incl. matcher-routed). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…c FailureLocation Error __type ValidationException vs real ValidationError (client errors.As never matched); RouteMatcher host prefix sagemaker-runtime. vs real runtime.sagemaker.<region> (never matched real traffic, path-match compensated); InvokeEndpointAsync omitted always-bound X-Amzn-SageMaker-FailureLocation response header. New PARITY.md. +tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deep op-by-op audit vs aws-sdk-go-v2 dynamodbstreams@v1.35.0: NextShardIterator termination, real ring-buffer record sourcing, no shard fabrication, DynamoDBStreams_20120810 target prefix distinct from DynamoDB, epoch-seconds timestamps, AttributeValue shapes all correct. New PARITY.md. No source changes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ateVocabulary)
Transcribe modeled Tags as map[string]string; real AWS Tags is a list of {Key,Value}.
Real provider sends "Tags":[{...}] -> unmarshal-into-map failed with BadRequestException
on aws_transcribe_vocabulary apply. Wire structs now use []transcribeTag across tag-bearing
ops, converted to/from internal storage via tagsToMap/tagsFromMap. Fixes TestTerraform_Transcribe.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tags matcher appsync registers a RouteMatcher claiming ANY /v1/tags path at PriorityPathVersioned with no ARN-service check; registered before kafka, it won priority ties and intercepted Kafka TagResource/ListTagsForResource, failing to parse the MSK ARN -> BadRequestException: invalid resourceArn. Kafka's own matcher is ARN-aware; bump its priority to +1 so it wins. Fixes TestIntegration_Kafka_Tags, TestIntegration_Kafka_ClusterLifecycle. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oad), no wrapper
Real App Mesh marks the single output member (Mesh/VirtualNode/VirtualRouter/Route/
VirtualService/VirtualGateway/GatewayRoute) with httpPayload: the response body IS that
object at the root, no {mesh:{...}} wrapper (verified vs appmesh SDK deserializers). A prior
sweep wrapped them, so clients read empty MeshName/VirtualNodeName. Removed wrapper on 28
Create/Describe/Update/Delete sites + dead key constants. List ops keep their plural wrapper.
Fixes TestIntegration_AppMesh_Mesh/VirtualNodeLifecycle.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- e2e timestreamquery: CreateScheduledQuery gained a clientToken param; pass it (compile fix). - cfn integration: GeneratedTemplateNotFoundException.ErrorCode() is unsuffixed 'GeneratedTemplateNotFound' per the SDK type; expect that (test encoded the pre-fix bug-compatible generic-fallback code). - servicediscovery integration: UpdateInstanceCustomHealthStatus is only valid for services created with HealthCheckCustomConfig (else real AWS returns CustomHealthNotFound); add it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…CI 404) Commit 51e3b67 relocated ListDomainNames to the real AWS path GET /2015-01-01/domain but deleted the collection-path GET /2015-01-01/es/domain handler, so the CRUD-collection list step 404'd (create POST + describe still worked). Restored the /es/domain GET as an alias alongside the wire-correct /domain path; both now serve ListDomainNames. Fixes TestIntegration_Elasticsearch_Domain_CRUD. +route-matrix test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ual value (CI) Commit 2b2086c changed equal RetentionPeriodHours from an idempotent no-op to InvalidArgumentException, reading the SDK 'must be more/less' doc literally. Live repro with the real kinesis SDK: terraform's create-then-set / idempotent re-apply issues Increase with a value equal to current retention -> the strict check 400'd, failing aws_kinesis_stream apply. Reverted equal -> no-op success; still reject wrong-direction + out-of-[24,8760]. Fixes TestTerraform_Kinesis. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sserting Parity made CreateServer return OFFLINE (real AWS: servers start OFFLINE, StartServer required). TestTransferDashboard asserted immediate ONLINE. Drive the real lifecycle: CreateServer -> StartServer -> wait for async STARTING->ONLINE (100ms transition) via require.Eventually, then assert the dashboard renders ONLINE. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…pers Every per-region store helper (modelsStore/endpointsStore/trainingJobsStore/... 80+ across backend.go + backend_*.go) lazily wrote its outer map (b.X[r]=store.Register(...)) but was called from RLock-only read paths (List*/Describe*/Get*). Two RLock holders racing to write the same map -> data race (and store.Register's unguarded r.tables write can panic 'already registered' under contention). The dashboard's concurrent List* calls tripped -race in the e2e SageMaker dashboard tests. Added non-mutating *RO twins that return the existing region store or a throwaway empty one (never writing the outer map / never Register) and routed all RLock read paths through them; write paths (Lock) keep lazy-init. +concurrency regression test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
Author
📊 Code Coverage Report
Tip This project maintains a minimum coverage threshold of 85%. Maintain or improve coverage on new code to ensure long-term stability. Last updated: Tue, 14 Jul 2026 02:37:27 GMT |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.