refactor: the intermediate representation's exported names say what they hold - #165
Merged
ShocOne merged 1 commit intoAug 30, 2026
Conversation
Base automatically changed from
refactor/the-intermediate-representation-names-what-it-holds
to
main
August 30, 2026 09:00
…hey hold Every exported identifier of the intermediate representation that the owner ruled on is renamed, and every consumer follows: Attribute.Kind -> Type; Attribute.Nested -> NestedAttributes; Resource/Datasource/ListResource.Schema -> Attributes, ListResource.AddressingSchema -> AddressingAttributes, Action.RequestSchema -> RequestAttributes; Parameter -> URLPathParameter; Authority -> SchemaAttributeTypeDetermination (and its four routes); Resource.EventualConsistency -> ReadAfterWriteDelay; ConfigVariant -> ValidConfigurationVariant; Equals -> WhenPropertyEquals; Valid -> AttributesValidWhenEqual; Attribute.Filter -> IsDatasourceFilterArgument; SilentlyIgnoredOnUpdate -> IgnoredOnUpdate; UnsupportedEntity.Kind -> TerraformBlockType; OperationInvoke -> OperationAction. "excluded" is the one word for the toolkit setting an entity or attribute aside: refuse() -> exclude(), refuseReservedRootNames() -> excludeReservedRootNames(), refusedAttributes() -> excludedAttributes(), and the docs say the same. The audit's "refusal" — an API answering a request with a 4xx — is a different fact and keeps its word. The toolkit's own JSON is camelCase throughout, as the OpenAPI document's keys are: the intermediate representation's and sdkbind's tags migrate, and unsupported.json moves to format version 3 — formatVersion, terraformBlockType in place of kind, and the cause objectWithoutPropertiesOrAdditionalProperties in place of shapelessObject. The resource template reads HasReadAfterWriteDelay / ReadAfterWriteDelay and emits the constant readAfterWriteDelay. The glossary records every new term and retires authority, refuse (as the code verb) and shapelessObject; the naming standard's R6 row names camelCase as the JSON convention and points at the acronym table as the record of that set. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XPLePCqzyYncF7TedagFkg
ShocOne
force-pushed
the
refactor/the-intermediate-representation-api-names-what-it-holds
branch
from
August 30, 2026 09:02
2ae6132 to
3fb7677
Compare
ShocOne
deleted the
refactor/the-intermediate-representation-api-names-what-it-holds
branch
August 30, 2026 09:03
This was referenced Aug 30, 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.
What
The owner-ruled renames of the intermediate representation's exported API, applied across every consumer (
emit,sdkbind,fixtures,providergen,cli, templates), plus the two contract changes they imply.Attribute.KindAttribute.TypeAttribute.NestedAttribute.NestedAttributesResource/Datasource/ListResource.Schema,ListResource.AddressingSchema,Action.RequestSchema.Attributes,.AddressingAttributes,.RequestAttributesParameterURLPathParameterAuthority+Authority*consts +Attribute.AuthoritySchemaAttributeTypeDetermination(+SchemaAttributeTypeDetermination<Route>)Resource.EventualConsistencyResource.ReadAfterWriteDelayConfigVariantValidConfigurationVariantConditionalRequirement.Equals,ConditionalValidity.EqualsWhenPropertyEqualsConditionalValidity.Valid,ValidConfigurationVariant.ValidAttributesValidWhenEqualAttribute.FilterAttribute.IsDatasourceFilterArgumentAttribute.SilentlyIgnoredOnUpdateAttribute.IgnoredOnUpdateUnsupportedEntity.Kind,emit.Unsupported.KindTerraformBlockTypeOperationInvokeOperationActionrefuse(),refuseReservedRootNames(),refusedAttributes(),emissionRefusalsexclude(),excludeReservedRootNames(),excludedAttributes(),emissionExclusionssdkbind.FieldBinding.Kind.Type"excluded" is the word for the toolkit setting an entity or attribute aside, in identifiers and in docs prose (CLAUDE.md, contract, glossary, emittance tracker, mapping, comment-style, rehearsal, releasing). Two senses deliberately keep their own words: an API answering a request with a 4xx stays the audit's refusal (
refusal_grammar,uncorrectableRefusal,refusedOptionalField), and Terraform's own behaviour ("terraform refuses to load a provider") stays as Terraform describes it. Where a verb declines bad input (exit code 1,config validate, a store rejecting a malformed document) the docs now say what happens ("stopped on an exclusion", "not accepted") and the corresponding test names (…RefusesTrailingArguments) are left alone — renaming eighty of those to "Excludes" would have made them wrong. Say if you want that scope widened.Contract changes (semver; migration note)
unsupported.jsonformat version 2 → 3:format_version→formatVersion;kind→terraformBlockType; causeshapelessObject→objectWithoutPropertiesOrAdditionalProperties. A provider repo's committedunsupported.jsonregenerates on its next run; nothing reads the old spelling.sdkbindmigrates;Namestagspascal/camelbecomepascalCase/camelCase(R6: the wire spelling is the Go spelling).eventualConsistencyis nowreadAfterWriteDelay(template fieldsHasReadAfterWriteDelay/ReadAfterWriteDelay). A generated tree changes by that one identifier.Docs
docs/glossary.md: entries forNestedAttributes,Attributes,Type,URLPathParameter,SchemaAttributeTypeDetermination,ReadAfterWriteDelay,TerraformBlockType,exclude,IsDatasourceFilterArgument,ValidConfigurationVariant,WhenPropertyEquals/AttributesValidWhenEqual; retires authority, refuse (code verb), shapelessObject.docs/naming-standard.md: R6's JSON row reads camelCase "matching the OpenAPI document's own keys"; R4 exception 1 names the acronym table as the record rather than repeating a drifted list.docs/config.mdregenerated (one description reworded).Verification
make checkgreen: 90.2% total, every package above 80%, hygiene gate clean.TestUnit_Run_Curated*builds both dialects' trees and runs their tests with the renamed constant.🤖 Generated with Claude Code
https://claude.ai/code/session_01XPLePCqzyYncF7TedagFkg