feat: vendor the remaining 226 AWS models and answer the routing they contest - #160
Merged
Merged
Conversation
194 of the 420 models AWS publishes were vendored, so there was no proof the other 226 even parse. All 226 are downloaded from aws-sdk-go-v2 and internal/generated is regenerated from the full set: 224 new service packages, the alias table from 432 to 927 entries, and roughly 5,687 more classifiable operations in the CRUD registry. No service is registered. The fidelity manifest, compat/services.json and cmd/devcloud/imports.go are byte-identical, because BuildFidelityData iterates providers rather than models — so every published coverage figure is unchanged and make stats still reports 205 services.
Vendoring 226 models made ten identifiers contested that were not before, and
the generator omits a contested alias rather than guess. Four of the ten route
today — events, awsevents, ds and execute-api — and would have stopped routing;
they keep the target they already had. Three more name a service DevCloud does
not register yet and are decided anyway, and three have no basis to pick and are
recorded as deliberately unrouted.
Two aliases repointed without ever being reported as contested: sso and cloudhsm
now have in-tree models that name themselves, so selfNamedClaimant hands each the
alias and no collision is raised. Both are pinned back to the answer they gave
before, and cloudhsm gains the golden-alias pin it never had — without it, that
repoint failed no test at all. Delete both overrides when
internal/services/{sso,cloudhsm} exist.
This was referenced Sep 12, 2026
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.
Summary
Vendors the 226 AWS Smithy models DevCloud did not carry and regenerates
internal/generatedfrom the full set of 420, then resolves the only side effect that reaches runtime: 10 newly contested aliases and 2 that repointed without ever being reported as contested. No service is registered and every published coverage figure is unchanged.Related Issue
Fixes #
Changes
smithy-models/194 -> 420), downloaded fromaws/aws-sdk-go-v2with the existingscripts/download-smithy-models.sh. 226/226 succeeded.internal/generatedfrom the full set: 224 new service packages (199 -> 423 entries), the alias table 432 -> 927, and roughly 5,687 more classifiable operations in the CRUD registry.make codegenis byte-for-byte idempotent.serviceIDOverrides. Four of them route today and would have stopped:events,awsevents,ds,execute-apikeep the target they already had.cassandra,mgh,wisdomserviceare decided even though their target is not registered yet.sms-voice,aws-marketplace,partnercentralhave no basis to pick and are recorded as deliberately unrouted.ssoandcloudhsmnow have in-tree models that name themselves, soselfNamedClaimanthands each the alias with no collision raised. Both are pinned back to their prior answer, andcloudhsmgains the golden-alias pin it never had — without it that repoint failed no test at all.internal/codegen/gen_aliases_test.gofrom 10 to 20, each entry commented with its claimants.Deliberately not in this PR
No service registration, no hand-written providers, no
docs/coverage.mdedit.internal/generated/fidelity/,compat/services.jsonandcmd/devcloud/imports.goare byte-identical, becauseBuildFidelityDataiterates providers rather than models — which is what makes this phase separable from provider registration.Follow-up this PR creates
The
ssoandcloudhsmoverrides are deliberately temporary. Delete both wheninternal/services/{sso,cloudhsm}exist; leaving them would route each service's traffic to the neighbour that used to stand in for it.Files Changed
smithy-models/*.jsoninternal/generated/{service}/internal/generated/aliases/aliases_gen.gointernal/generated/crudregistry/registry_gen.gointernal/gateway/protocol.gointernal/gateway/aliases_test.gocloudhsmgolden pininternal/codegen/gen_aliases_test.gochanges/unreleased/Added-20260913-120000.yamlTest Plan
CGO_ENABLED=0 go build ./...andgo vet ./...— cleanCGO_ENABLED=0 go test ./...— green, withdocs/coverage.mduntouchedgolangci-lint run—0 issues.rm -rf internal/generated && make codegentwice — byte-identical output, socodegen-drifthas nothing to reportmake stats— still Services: 205ServiceIDstables,LOSTis exactlyawsevents,ds,events,execute-apiandREPOINTEDis exactlycloudhsmandsso. All six are covered by an override in this PR; nothing else moved.cloudhsmpin was verified by removing what it guards. With the override deleted,TestNormalizeServiceIDPreservesEveryKnownAliasfails withnormalizeServiceID("cloudhsm") = "cloudhsm", want "cloudhsmv2". Before this PR that deletion would have failed no test in the tree.BuildAliases's claim logic over all 420 models from the service shape traits, not taken on trust.Checklist
golangci-lint run)Note for the reviewer
The diff is large but splits cleanly:
c12f4d5is the vendored models and generated output,8331ca1is the ~40 hand-written lines. Only the second needs reading.smithy-models/sso-oidc.jsontrips GitHub push protection on an upstream documentation example — theexamplestrait for the JWT Bearer grant, shipped by AWS in the public model with a dummy123456789012account ID. It was allowlisted as a false positive. Six models already vendored (s3.json,ecr.json,qapps.jsonand others) carry the same class of sample value.