Relationships
↔ sibling #3936#3943 AWS codegen collapses nested createOnly/readOnly paths to their last segment
Opened by stack72 · 10/25/2026· Shipped 10/25/2026
codegen/shared/schema/split.ts normalizeOnlyProperties() turns every JSON Pointer in createOnlyProperties / readOnlyProperties / writeOnlyProperties into its last path segment, so a nested pointer is treated as a top-level property name.
Example: AWS::Budgets::Budget declares createOnlyProperties /properties/Budget/BudgetName. The generated update method passes BudgetName as a create-only property. updateResource() in the generated _lib/aws.ts filters JSON-patch ops by their top-level segment, so a change to Budget.BudgetName (path /Budget/BudgetName) is not filtered and is sent to Cloud Control, which rejects it as not updatable. The other direction is also wrong: a nested pointer whose last segment equals a real top-level property name (for example /properties/Foo/Name next to a top-level Name) would wrongly skip updates to that top-level property, and the same collapse in readOnly would prune a writable top-level property from the generated arguments.
Expected: nested pointers keep their full path. Filtering compares patch op paths against full paths, and pruneProperties matches readOnly by full path only.
Found while triaging swamp-club #3936 (Budget argument missing). That issue exposes the Budget property; this bug is separate and was not introduced by it.
Shipped
Click a lifecycle step above to view its details.
system commented 10/25/2026, 9:45:10 PM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
Sign in to post a ripple.