@intentius/chant-lexicon-aws 0.49.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/codegen/generate-lexicon.d.ts +5 -0
  2. package/dist/codegen/generate-lexicon.d.ts.map +1 -1
  3. package/dist/components/host-delivery.d.ts +4 -3
  4. package/dist/components/host-delivery.d.ts.map +1 -1
  5. package/dist/disruption.d.ts +26 -0
  6. package/dist/disruption.d.ts.map +1 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/integrity.json +9 -4
  10. package/dist/lint/audit-catalog.d.ts.map +1 -1
  11. package/dist/lint/post-synth/index.d.ts.map +1 -1
  12. package/dist/lint/post-synth/waw016.d.ts +10 -2
  13. package/dist/lint/post-synth/waw016.d.ts.map +1 -1
  14. package/dist/lint/post-synth/waw064.d.ts +17 -0
  15. package/dist/lint/post-synth/waw064.d.ts.map +1 -0
  16. package/dist/lint/post-synth/waw065.d.ts +23 -0
  17. package/dist/lint/post-synth/waw065.d.ts.map +1 -0
  18. package/dist/lint/post-synth/waw066.d.ts +25 -0
  19. package/dist/lint/post-synth/waw066.d.ts.map +1 -0
  20. package/dist/lint/post-synth/waw067.d.ts +24 -0
  21. package/dist/lint/post-synth/waw067.d.ts.map +1 -0
  22. package/dist/lint/post-synth/waw068.d.ts +20 -0
  23. package/dist/lint/post-synth/waw068.d.ts.map +1 -0
  24. package/dist/manifest.json +1 -1
  25. package/dist/meta.json +34 -0
  26. package/dist/okf/index.md +5 -0
  27. package/dist/okf/rules/WAW064.md +18 -0
  28. package/dist/okf/rules/WAW065.md +25 -0
  29. package/dist/okf/rules/WAW066.md +22 -0
  30. package/dist/okf/rules/WAW067.md +20 -0
  31. package/dist/okf/rules/WAW068.md +19 -0
  32. package/dist/okf/types/EC2Route.md +2 -0
  33. package/dist/okf/types/InternetGateway.md +4 -0
  34. package/dist/okf/types/Map.md +4 -0
  35. package/dist/okf/types/NatGateway.md +4 -0
  36. package/dist/okf/types/RouteTable.md +4 -0
  37. package/dist/okf/types/Subnet.md +2 -0
  38. package/dist/okf/types/SubnetRouteTableAssociation.md +5 -0
  39. package/dist/okf/types/Table.md +3 -0
  40. package/dist/okf/types/TransitGateway.md +6 -0
  41. package/dist/okf/types/TransitGatewayAttachment.md +4 -0
  42. package/dist/okf/types/TransitGatewayPeeringAttachment.md +4 -0
  43. package/dist/okf/types/TransitGatewayRoute.md +5 -0
  44. package/dist/okf/types/TransitGatewayRouteTable.md +4 -0
  45. package/dist/okf/types/TransitGatewayRouteTableAssociation.md +4 -0
  46. package/dist/okf/types/TransitGatewayRouteTablePropagation.md +4 -0
  47. package/dist/okf/types/TransitGatewayVpcAttachment.md +4 -0
  48. package/dist/okf/types/Type.md +5 -0
  49. package/dist/okf/types/VPNConnection.md +4 -0
  50. package/dist/okf/types/VPNGateway.md +4 -0
  51. package/dist/op/builders.d.ts +47 -0
  52. package/dist/op/builders.d.ts.map +1 -0
  53. package/dist/plugin.d.ts.map +1 -1
  54. package/dist/rules/waw016.ts +37 -16
  55. package/dist/rules/waw064.ts +52 -0
  56. package/dist/rules/waw065.ts +110 -0
  57. package/dist/rules/waw066.ts +155 -0
  58. package/dist/rules/waw067.ts +114 -0
  59. package/dist/rules/waw068.ts +78 -0
  60. package/dist/spec/parse.d.ts +7 -0
  61. package/dist/spec/parse.d.ts.map +1 -1
  62. package/package.json +2 -2
  63. package/src/codegen/fallback.ts +1 -0
  64. package/src/codegen/generate-lexicon.ts +6 -0
  65. package/src/codegen/sam.ts +9 -0
  66. package/src/components/host-delivery.ts +4 -3
  67. package/src/disruption.test.ts +198 -0
  68. package/src/disruption.ts +154 -0
  69. package/src/generated/lexicon-aws.json +34 -0
  70. package/src/index.ts +8 -0
  71. package/src/lint/audit-catalog.ts +10 -0
  72. package/src/lint/post-synth/index.ts +10 -0
  73. package/src/lint/post-synth/waw016.test.ts +61 -4
  74. package/src/lint/post-synth/waw016.ts +37 -16
  75. package/src/lint/post-synth/waw064.test.ts +79 -0
  76. package/src/lint/post-synth/waw064.ts +52 -0
  77. package/src/lint/post-synth/waw065.test.ts +90 -0
  78. package/src/lint/post-synth/waw065.ts +110 -0
  79. package/src/lint/post-synth/waw066.test.ts +108 -0
  80. package/src/lint/post-synth/waw066.ts +155 -0
  81. package/src/lint/post-synth/waw067.test.ts +79 -0
  82. package/src/lint/post-synth/waw067.ts +114 -0
  83. package/src/lint/post-synth/waw068.test.ts +74 -0
  84. package/src/lint/post-synth/waw068.ts +78 -0
  85. package/src/lsp/hover.ts +14 -2
  86. package/src/op/builders.test.ts +61 -0
  87. package/src/op/builders.ts +72 -0
  88. package/src/plugin.ts +16 -1
  89. package/src/spec/parse.test.ts +74 -0
  90. package/src/spec/parse.ts +26 -6
@@ -18,6 +18,11 @@ export interface LexiconEntry {
18
18
  writeOnly?: string[];
19
19
  primaryIdentifier?: string[];
20
20
  deprecatedProperties?: string[];
21
+ /**
22
+ * Subset of `deprecatedProperties` that only a regex over the property
23
+ * description supports; the rest is declared by the Registry schema (#1701).
24
+ */
25
+ inferredDeprecations?: string[];
21
26
  conditionalCreateOnly?: string[];
22
27
  replacementStrategy?: "delete_then_create" | "create_then_delete";
23
28
  tagging?: {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-lexicon.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-lexicon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAOhF,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAAC;IAClE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACjD,MAAM,CA8CR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYlE"}
1
+ {"version":3,"file":"generate-lexicon.d.ts","sourceRoot":"","sources":["../../src/codegen/generate-lexicon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAOhF,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAAC;IAClE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACjD,MAAM,CA+CR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYlE"}
@@ -54,9 +54,10 @@ export interface CodeDeployOutput {
54
54
  * Deploy a revision to a host (fleet) via AWS CodeDeploy: create the
55
55
  * deployment, then wait for a terminal status. Rollback re-invokes
56
56
  * `stopAndRollback` against the deployment id this step created (captured in
57
- * a closure-scoped map keyed by application/deploymentGroup, since the
58
- * driver's saga rollback calls `rollback(ctx, sameInput)` rather than passing
59
- * `run`'s output) riding CodeDeploy's own native automatic rollback to the
57
+ * a closure-scoped map keyed by application/deploymentGroup; the driver now
58
+ * also passes `run`'s output as `rollback`'s optional third arg (#1944), but
59
+ * this capability's input-derived key needs neither channel to resolve
60
+ * identity) — riding CodeDeploy's own native automatic rollback to the
60
61
  * last known-good revision rather than a chant-scripted compensation, the
61
62
  * "auto" rollback style the Neo4j pilot's docs comment contrasts with the
62
63
  * ALB/ECS pilot's component-declared one.
@@ -1 +1 @@
1
- {"version":3,"file":"host-delivery.d.ts","sourceRoot":"","sources":["../../src/components/host-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI5E,MAAM,WAAW,eAAe;IAC9B,oKAAoK;IACpK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4HAA4H;IAC5H,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC1G,gDAAgD;IAChD,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACrC,oLAAoL;IACpL,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,GAAE,aAAsC,GAC/C,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CA2B/C;AAED,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC;AAIhH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,aAAsC,GAAG,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAY1I;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC;AAIhH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,aAAsC,GAAG,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAW1I;AAED,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC"}
1
+ {"version":3,"file":"host-delivery.d.ts","sourceRoot":"","sources":["../../src/components/host-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI5E,MAAM,WAAW,eAAe;IAC9B,oKAAoK;IACpK,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4HAA4H;IAC5H,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAC1G,gDAAgD;IAChD,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACrC,oLAAoL;IACpL,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,GAAE,aAAsC,GAC/C,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CA2B/C;AAED,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC;AAIhH,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,aAAsC,GAAG,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAY1I;AAED,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC;AAIhH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,GAAE,aAAsC,GAAG,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAW1I;AAED,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,eAAe,EAAE,gBAAgB,CAAgC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { DisruptionQuery, DisruptionVerdict } from "@intentius/chant/lexicon";
2
+ /** The slice of a `lexicon-aws.json` entry that carries replacement semantics. */
3
+ export interface DisruptionSpec {
4
+ resourceType: string;
5
+ kind: string;
6
+ /** Read-only attributes (TS key → CF attr name). An output changing is a symptom, never a cause. */
7
+ attrs?: Record<string, string>;
8
+ createOnly?: string[];
9
+ conditionalCreateOnly?: string[];
10
+ replacementStrategy?: "delete_then_create" | "create_then_delete";
11
+ }
12
+ /**
13
+ * Classify one pending update against the type's compiled schema. Pure — the
14
+ * spec table is passed in, so this is testable without generated artifacts.
15
+ */
16
+ export declare function classifyAwsChange(query: DisruptionQuery, specs: Map<string, DisruptionSpec>): DisruptionVerdict;
17
+ /**
18
+ * `LexiconPlugin.classifyDisruption` for aws. Loads the compiled registry once
19
+ * and answers every query from it. A registry that cannot be read leaves every
20
+ * change `unknown` — the honest answer, and the one the contract requires.
21
+ */
22
+ export declare function awsDisruption(options: {
23
+ environment: string;
24
+ changes: DisruptionQuery[];
25
+ }): Record<string, DisruptionVerdict>;
26
+ //# sourceMappingURL=disruption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disruption.d.ts","sourceRoot":"","sources":["../src/disruption.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAInF,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAAC;CACnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACjC,iBAAiB,CAuDnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAOpC"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export { EffectReceipt, receiptParameterName, AWS_EFFECT_RECEIPT_ENTITY_TYPE, EF
7
7
  export type { AwsEffectReceiptDeclaration } from "./effect-receipt-row.js";
8
8
  export { awsReceiptStore, observeReceiptRows, ssmGetParameter, ssmPutParameter } from "./receipt-store.js";
9
9
  export type { AwsReceiptStoreOptions, ReceiptRowObservation } from "./receipt-store.js";
10
+ export { awsApply, awsDelete, flociUp, flociDown } from "./op/builders.js";
10
11
  export { awsSerializer } from "./serializer.js";
11
12
  export { nestedStack, isNestedStackInstance, NestedStackOutputRef, isNestedStackOutputRef, NESTED_STACK_MARKER } from "./nested-stack.js";
12
13
  export type { NestedStackOptions, NestedStackInstance } from "./nested-stack.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "73f13702a63ae229fbc2ca77dc23d1fb98a22f2a7a101e8ddf4ec66749527440",
5
- "meta.json": "2e4cae67cbc2eb2962c3dd0aa57008ae96fb725dd0118af7b04b2b44eab7722a",
4
+ "manifest.json": "0c488f36f907e56798a03315c3dec265068b2db4233aa839f03db166e2c17b54",
5
+ "meta.json": "e7c751a09a871dc5a16e9aeea0b0a149513a7a2a051c923e9a5acf193dc2aef8",
6
6
  "types/index.d.ts": "6d6b37bd14a9b40fb3ff5c66e1cb49be1ae1032de47a4e167cf5f411c943b7f5",
7
7
  "rules/hardcoded-region.ts": "5a0eaf7ab391231fe6cd51426ece29539cb4b36f31c8dd060956638fed55722a",
8
8
  "rules/iam-wildcard.ts": "135d7217d278fef50939e605c5da32603ba35674b8c4b5c4d66a06c77903e945",
@@ -15,7 +15,7 @@
15
15
  "rules/waw013.ts": "f9b37b955917415a2eb5f4aed7f28b76aff0a6abdb05228dcbb8bc77bc67672a",
16
16
  "rules/waw014.ts": "889f1b06899b50f98941d05b029954cf375ac8a130933b98c9586079096216aa",
17
17
  "rules/waw015.ts": "071c940fb6432cd8b42a44d083921e9491d5063417839109c10b2bd13dd2032e",
18
- "rules/waw016.ts": "88c7bf78a6580a64169ce1218911d9ef60a69e4d6897730c46c89f0b45ec7a42",
18
+ "rules/waw016.ts": "5d6b614bcdf3e26d87dd6c4ec67d7c5e698b3bf05db82dc05d8e006da1e0e488",
19
19
  "rules/waw017.ts": "658554008954f71036e23b514dece7063142198fbdca125f11d09026f1d21ab2",
20
20
  "rules/waw018.ts": "a4aa83a25104f039a6c5e0f3e1f5b8b65e493b0ba162c985988190a726b90d2f",
21
21
  "rules/waw019.ts": "f14ebf024a3cce7005d54c762e4e0979537d6a854fb123344107d40d92a94b5c",
@@ -63,9 +63,14 @@
63
63
  "rules/waw061.ts": "5e25d1cd07c5ff0c918d84995cf37a8fa22294242de6b421c1eef37f4fb6521d",
64
64
  "rules/waw062.ts": "8051ac5cbc3e53fc1e664bb8e6ffd54a75fac0b6e9e802bd0d244dfec59d82a0",
65
65
  "rules/waw063.ts": "c64f86e7cea5363c42d6aa59c06c4343b7c6cad20aeb9fbf4fec69de5e63ee87",
66
+ "rules/waw064.ts": "46c0cda1b777002f3412b507fcb4715cc630deb31d5306443234bfa3b74e77d1",
67
+ "rules/waw065.ts": "73b4c85428880bd633442f5e1eb7b228526423313ecc3b5b8950f206f33d2057",
68
+ "rules/waw066.ts": "f30e4996fdeb1703f24e1152ffe0698b6a55d140a341dcd9528199206abb18c0",
69
+ "rules/waw067.ts": "8e66f3512569c106c4c6868786bb870af1b3b05d3542118ca6bb5c61c57314e7",
70
+ "rules/waw068.ts": "adbfe84e9b3cdafc072346d87a5df81a97ab07bc5171f3d4abb824c29e9a66a0",
66
71
  "skills/chant-aws.md": "4d65eb160e001f2af42eb7c622a5b498c2fd1f5afbd6c8155615c010fb265c63",
67
72
  "skills/chant-aws-eks.md": "8789255709ff004ad0a875fd5999edcdc66fc6e33d710db058d9f42703bcfdfe",
68
73
  "skills/chant-aws-carve-terraform.md": "0ae4376590db47979be144d3ac6cdcfd56c9640d0536421aacf7330459d38e52"
69
74
  },
70
- "composite": "0863289514a6e704688b98dd03fd728b10c1763269f46a0591689f19bc8f9e24"
75
+ "composite": "e03cda0c71c249a0fad0b4c921913fe533bf0f3ddcfc9c4758a0f8d66922fb2d"
71
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAQ1F,6CAA6C;AAC7C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAgEpD,CAAC"}
1
+ {"version":3,"file":"audit-catalog.d.ts","sourceRoot":"","sources":["../../src/lint/audit-catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAQ1F,6CAA6C;AAC7C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA0EpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAyDvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAwD3C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AA8DvE,eAAO,MAAM,eAAe,EAAE,cAAc,EA6D3C,CAAC"}
@@ -2,12 +2,20 @@
2
2
  * WAW016: Deprecated Property Usage
3
3
  *
4
4
  * Flags properties marked as deprecated in the CloudFormation Registry.
5
- * Sources: explicit `deprecatedProperties` array + description text mining.
5
+ *
6
+ * Two bases feed this, and the finding says which one it stands on (#1701).
7
+ * A `declared` name comes from the Registry schema's own `deprecatedProperties`
8
+ * array. An `inferred` name comes from a regex over the property description,
9
+ * which also matches descriptions that mention the deprecation of a sibling
10
+ * property, an enum value, or the thing the property configures. Declared is a
11
+ * warning; inferred is reported at info and worded as a guess.
6
12
  */
7
13
  import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
14
+ /** What a deprecation classification rests on. */
15
+ export type DeprecationBasis = "declared" | "inferred";
8
16
  /**
9
17
  * Core detection logic — exported for direct testing with synthetic data.
10
18
  */
11
- export declare function checkDeprecatedProperties(ctx: PostSynthContext, deprecated: Map<string, Set<string>>): PostSynthDiagnostic[];
19
+ export declare function checkDeprecatedProperties(ctx: PostSynthContext, deprecated: Map<string, Map<string, DeprecationBasis>>): PostSynthDiagnostic[];
12
20
  export declare const waw016: PostSynthCheck;
13
21
  //# sourceMappingURL=waw016.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"waw016.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw016.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAgC9G;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACnC,mBAAmB,EAAE,CA6BvB;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
1
+ {"version":3,"file":"waw016.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw016.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,CAAC;AAuCvD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,gBAAgB,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,GACrD,mBAAmB,EAAE,CAiCvB;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * WAW064: Transit Gateway Route Table Declares A Blackhole Route
3
+ *
4
+ * `AWS::EC2::TransitGatewayRoute` with `Blackhole: true` silently drops any
5
+ * traffic matching its destination CIDR instead of forwarding it —
6
+ * CloudFormation deploys this without complaint, and the packet loss only
7
+ * surfaces downstream as unreachable hosts or a timeout nobody can explain
8
+ * from the template alone. A blackhole route is sometimes deliberate — an
9
+ * explicit deny for a CIDR range, or a placeholder pending real
10
+ * infrastructure — but it is also exactly what a copy-pasted route table or
11
+ * a forgotten cleanup step leaves behind. Warn so it stays a conscious
12
+ * choice rather than a silent accident.
13
+ */
14
+ import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
15
+ export declare function checkTgwBlackholeRoute(ctx: PostSynthContext): PostSynthDiagnostic[];
16
+ export declare const waw064: PostSynthCheck;
17
+ //# sourceMappingURL=waw064.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waw064.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw064.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAyBnF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WAW065: Transit Gateway Route Table Wiring Is Incomplete
3
+ *
4
+ * A Transit Gateway route table only does anything once two independent
5
+ * pieces are both wired up: an `AWS::EC2::TransitGatewayRouteTableAssociation`
6
+ * (which attachment's traffic is evaluated against this table) and an
7
+ * `AWS::EC2::TransitGatewayRouteTablePropagation` (which attachments' routes
8
+ * populate it). CloudFormation is happy to deploy a route table with one but
9
+ * not the other — the stack succeeds, and the gap only shows up as traffic
10
+ * that can't find a route. Two patterns, both "declared but half-wired":
11
+ *
12
+ * - a route table has one or more associations but zero propagations — the
13
+ * associated attachment's traffic is evaluated against this table, but
14
+ * nothing ever populates it with routes;
15
+ * - a declared attachment (VPC/VPN/peering, or the generic
16
+ * TransitGatewayAttachment) is referenced by neither an association nor
17
+ * a propagation anywhere in the template — it hangs off the transit
18
+ * gateway with no route table wiring at all.
19
+ */
20
+ import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
21
+ export declare function checkTgwRouteTableWiring(ctx: PostSynthContext): PostSynthDiagnostic[];
22
+ export declare const waw065: PostSynthCheck;
23
+ //# sourceMappingURL=waw065.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waw065.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw065.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAU9G,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAsErF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * WAW066: Private Subnet Route Table Has No Working Default Route
3
+ *
4
+ * Cross-resource join: a subnet's outbound path depends on a chain of three
5
+ * independently-declared resources — the `AWS::EC2::SubnetRouteTableAssociation`
6
+ * that pins it to a route table, the `AWS::EC2::Route` on that table for
7
+ * `0.0.0.0/0`, and the gateway that route names. CloudFormation validates
8
+ * none of this end-to-end: a subnet can be wired to a route table with no
9
+ * default route at all, or with a default route whose NAT gateway / Transit
10
+ * Gateway target was renamed or removed elsewhere in the template, and the
11
+ * stack still deploys clean. The subnet is black-holed — every deploy
12
+ * succeeds, and the only symptom is a workload with no outbound connectivity.
13
+ *
14
+ * A route table with a default route to an `AWS::EC2::InternetGateway` is
15
+ * treated as a public subnet and is out of scope for this check — this rule
16
+ * only flags the private case: no default route, or one whose target
17
+ * (`NatGatewayId` / `TransitGatewayId` / etc.) does not resolve to a
18
+ * resource declared in the same template. A route naming a target that
19
+ * exists in the template resolves cleanly and is never flagged, per the
20
+ * cross-resource contract.
21
+ */
22
+ import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
23
+ export declare function checkPrivateSubnetDefaultRoute(ctx: PostSynthContext): PostSynthDiagnostic[];
24
+ export declare const waw066: PostSynthCheck;
25
+ //# sourceMappingURL=waw066.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waw066.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw066.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAgD9G,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA2E3F;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * WAW067: Single-AZ NAT Gateway Serves Multi-AZ Private Subnets
3
+ *
4
+ * Cross-resource join across four resource kinds: a NAT gateway lives in one
5
+ * subnet, which lives in one Availability Zone; a route table's default
6
+ * route names the NAT gateway it forwards to; a subnet is pinned to a route
7
+ * table by an `AWS::EC2::SubnetRouteTableAssociation`. Follow that chain and
8
+ * a common reliability gap falls out — private subnets in two or more AZs
9
+ * all defaulting to the *same* NAT gateway. CloudFormation has no opinion on
10
+ * this; it deploys cleanly. But a NAT gateway lives entirely inside one AZ,
11
+ * so if that AZ has an outage, every subnet depending on it loses egress —
12
+ * including the subnets in AZs that were otherwise healthy. The
13
+ * Well-Architected fix is one NAT gateway per AZ, each serving only its own
14
+ * AZ's subnets.
15
+ *
16
+ * Only fires when the Availability Zones involved are literal strings —
17
+ * an `Fn::GetAZs`/`Fn::Select`-derived AZ can't be compared statically, so a
18
+ * subnet without a literal `AvailabilityZone` is silently excluded rather
19
+ * than guessed at.
20
+ */
21
+ import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
22
+ export declare function checkNatGatewaySingleAz(ctx: PostSynthContext): PostSynthDiagnostic[];
23
+ export declare const waw067: PostSynthCheck;
24
+ //# sourceMappingURL=waw067.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waw067.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw067.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAgFpF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * WAW068: VPN Gateway Has A Single VPN Connection
3
+ *
4
+ * An `AWS::EC2::VPNConnection` always gets two tunnels from AWS, but that
5
+ * redundancy only covers the tunnel pair inside one connection — it does
6
+ * nothing if the connection's Customer Gateway, on-prem device, or the
7
+ * single site it terminates at goes down. The reliability boundary that
8
+ * matters is the connection itself: a `AWS::EC2::VPNGateway` (or a Transit
9
+ * Gateway used for VPN attachment) with only one `VPNConnection` attached
10
+ * has no fallback path for hybrid connectivity if that connection's
11
+ * Customer Gateway or on-prem side fails.
12
+ *
13
+ * Cross-resource join: group every declared `VPNConnection` by the gateway
14
+ * (`VpnGatewayId` or `TransitGatewayId`) it attaches to, and flag any
15
+ * gateway left with exactly one.
16
+ */
17
+ import type { PostSynthCheck, PostSynthContext, PostSynthDiagnostic } from "@intentius/chant/lint/post-synth";
18
+ export declare function checkVpnGatewayRedundancy(ctx: PostSynthContext): PostSynthDiagnostic[];
19
+ export declare const waw068: PostSynthCheck;
20
+ //# sourceMappingURL=waw068.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waw068.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw068.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG9G,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAgDtF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aws",
3
- "version": "0.49.0",
3
+ "version": "0.51.0",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "AWS",
6
6
  "intrinsics": [
package/dist/meta.json CHANGED
@@ -6222,6 +6222,9 @@
6222
6222
  "deprecatedProperties": [
6223
6223
  "DeleteStorageConnectors"
6224
6224
  ],
6225
+ "inferredDeprecations": [
6226
+ "DeleteStorageConnectors"
6227
+ ],
6225
6228
  "tagging": {
6226
6229
  "taggable": true,
6227
6230
  "tagOnCreate": true,
@@ -11669,6 +11672,9 @@
11669
11672
  "deprecatedProperties": [
11670
11673
  "AccessControl"
11671
11674
  ],
11675
+ "inferredDeprecations": [
11676
+ "AccessControl"
11677
+ ],
11672
11678
  "tagging": {
11673
11679
  "taggable": true,
11674
11680
  "tagOnCreate": true,
@@ -14989,6 +14995,9 @@
14989
14995
  "deprecatedProperties": [
14990
14996
  "ComputeModel"
14991
14997
  ],
14998
+ "inferredDeprecations": [
14999
+ "ComputeModel"
15000
+ ],
14992
15001
  "replacementStrategy": "delete_then_create",
14993
15002
  "tagging": {
14994
15003
  "taggable": true,
@@ -15385,6 +15394,9 @@
15385
15394
  "deprecatedProperties": [
15386
15395
  "ComputeModel"
15387
15396
  ],
15397
+ "inferredDeprecations": [
15398
+ "ComputeModel"
15399
+ ],
15388
15400
  "conditionalCreateOnly": [
15389
15401
  "DbNodes"
15390
15402
  ],
@@ -17085,6 +17097,9 @@
17085
17097
  "deprecatedProperties": [
17086
17098
  "Deprecated"
17087
17099
  ],
17100
+ "inferredDeprecations": [
17101
+ "Deprecated"
17102
+ ],
17088
17103
  "tagging": {
17089
17104
  "taggable": true,
17090
17105
  "tagOnCreate": true,
@@ -29032,6 +29047,9 @@
29032
29047
  "TdeCredentialPassword",
29033
29048
  "DBSecurityGroups"
29034
29049
  ],
29050
+ "inferredDeprecations": [
29051
+ "DBSecurityGroups"
29052
+ ],
29035
29053
  "conditionalCreateOnly": [
29036
29054
  "AutoMinorVersionUpgrade",
29037
29055
  "AvailabilityZone",
@@ -33246,6 +33264,9 @@
33246
33264
  "deprecatedProperties": [
33247
33265
  "ImageScanningConfiguration"
33248
33266
  ],
33267
+ "inferredDeprecations": [
33268
+ "ImageScanningConfiguration"
33269
+ ],
33249
33270
  "tagging": {
33250
33271
  "taggable": true,
33251
33272
  "tagOnCreate": true,
@@ -41749,6 +41770,9 @@
41749
41770
  "deprecatedProperties": [
41750
41771
  "Runtime"
41751
41772
  ],
41773
+ "inferredDeprecations": [
41774
+ "Runtime"
41775
+ ],
41752
41776
  "conditionalCreateOnly": [
41753
41777
  "DurableConfig"
41754
41778
  ],
@@ -49621,6 +49645,10 @@
49621
49645
  "ElasticGpuSpecifications",
49622
49646
  "ElasticInferenceAccelerators"
49623
49647
  ],
49648
+ "inferredDeprecations": [
49649
+ "ElasticGpuSpecifications",
49650
+ "ElasticInferenceAccelerators"
49651
+ ],
49624
49652
  "conditionalCreateOnly": [
49625
49653
  "AdditionalInfo",
49626
49654
  "Affinity",
@@ -64878,6 +64906,9 @@
64878
64906
  "deprecatedProperties": [
64879
64907
  "DBPort"
64880
64908
  ],
64909
+ "inferredDeprecations": [
64910
+ "DBPort"
64911
+ ],
64881
64912
  "tagging": {
64882
64913
  "taggable": true,
64883
64914
  "tagOnCreate": true,
@@ -100101,6 +100132,9 @@
100101
100132
  "deprecatedProperties": [
100102
100133
  "State"
100103
100134
  ],
100135
+ "inferredDeprecations": [
100136
+ "State"
100137
+ ],
100104
100138
  "tagging": {
100105
100139
  "taggable": true,
100106
100140
  "tagOnCreate": true,
package/dist/okf/index.md CHANGED
@@ -1727,3 +1727,8 @@ okf_version: '0.2'
1727
1727
  * [WAW061](/rules/WAW061.md) - Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
1728
1728
  * [WAW062](/rules/WAW062.md) - Duplicate export name or explicit resource name within a template — fails at deploy time
1729
1729
  * [WAW063](/rules/WAW063.md) - IAM policy denies an action another attached policy on the same role allows — explicit Deny wins, runtime 403
1730
+ * [WAW064](/rules/WAW064.md) - Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
1731
+ * [WAW065](/rules/WAW065.md) - Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
1732
+ * [WAW066](/rules/WAW066.md) - Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
1733
+ * [WAW067](/rules/WAW067.md) - A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
1734
+ * [WAW068](/rules/WAW068.md) - VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: WAW064
4
+ description: Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
5
+ id: WAW064
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: aws
9
+ docs: https://intentius.io/chant/lexicons/aws/rules/
10
+ ---
11
+ Transit Gateway route table declares a Blackhole route — confirm the traffic drop is intentional, not an accident
12
+
13
+ ## Applies to
14
+
15
+ - [Table](/types/Table.md)
16
+ - [TransitGateway](/types/TransitGateway.md)
17
+ - [TransitGatewayRoute](/types/TransitGatewayRoute.md)
18
+ - [Type](/types/Type.md)
@@ -0,0 +1,25 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: WAW065
4
+ description: Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
5
+ id: WAW065
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: aws
9
+ docs: https://intentius.io/chant/lexicons/aws/rules/
10
+ ---
11
+ Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
12
+
13
+ ## Applies to
14
+
15
+ - [Map](/types/Map.md)
16
+ - [Table](/types/Table.md)
17
+ - [TransitGateway](/types/TransitGateway.md)
18
+ - [TransitGatewayAttachment](/types/TransitGatewayAttachment.md)
19
+ - [TransitGatewayPeeringAttachment](/types/TransitGatewayPeeringAttachment.md)
20
+ - [TransitGatewayRoute](/types/TransitGatewayRoute.md)
21
+ - [TransitGatewayRouteTable](/types/TransitGatewayRouteTable.md)
22
+ - [TransitGatewayRouteTableAssociation](/types/TransitGatewayRouteTableAssociation.md)
23
+ - [TransitGatewayRouteTablePropagation](/types/TransitGatewayRouteTablePropagation.md)
24
+ - [TransitGatewayVpcAttachment](/types/TransitGatewayVpcAttachment.md)
25
+ - [Type](/types/Type.md)
@@ -0,0 +1,22 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: WAW066
4
+ description: Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
5
+ id: WAW066
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: aws
9
+ docs: https://intentius.io/chant/lexicons/aws/rules/
10
+ ---
11
+ Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
12
+
13
+ ## Applies to
14
+
15
+ - [EC2Route](/types/EC2Route.md)
16
+ - [InternetGateway](/types/InternetGateway.md)
17
+ - [Map](/types/Map.md)
18
+ - [RouteTable](/types/RouteTable.md)
19
+ - [Subnet](/types/Subnet.md)
20
+ - [SubnetRouteTableAssociation](/types/SubnetRouteTableAssociation.md)
21
+ - [Table](/types/Table.md)
22
+ - [Type](/types/Type.md)
@@ -0,0 +1,20 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: WAW067
4
+ description: A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
5
+ id: WAW067
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: aws
9
+ docs: https://intentius.io/chant/lexicons/aws/rules/
10
+ ---
11
+ A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
12
+
13
+ ## Applies to
14
+
15
+ - [EC2Route](/types/EC2Route.md)
16
+ - [Map](/types/Map.md)
17
+ - [NatGateway](/types/NatGateway.md)
18
+ - [Subnet](/types/Subnet.md)
19
+ - [SubnetRouteTableAssociation](/types/SubnetRouteTableAssociation.md)
20
+ - [Type](/types/Type.md)
@@ -0,0 +1,19 @@
1
+ ---
2
+ type: post-synth-check
3
+ title: WAW068
4
+ description: VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
5
+ id: WAW068
6
+ severity: error
7
+ category: post-synth
8
+ lexicon: aws
9
+ docs: https://intentius.io/chant/lexicons/aws/rules/
10
+ ---
11
+ VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
12
+
13
+ ## Applies to
14
+
15
+ - [Map](/types/Map.md)
16
+ - [TransitGateway](/types/TransitGateway.md)
17
+ - [Type](/types/Type.md)
18
+ - [VPNConnection](/types/VPNConnection.md)
19
+ - [VPNGateway](/types/VPNGateway.md)
@@ -35,3 +35,5 @@ resource_type: AWS::EC2::Route
35
35
  ## Governed by
36
36
 
37
37
  - [WAW030](/rules/WAW030.md): Missing DependsOn for known CloudFormation ordering patterns
38
+ - [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
39
+ - [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
@@ -16,3 +16,7 @@ resource_type: AWS::EC2::InternetGateway
16
16
  ## Attributes
17
17
 
18
18
  - `InternetGatewayId`
19
+
20
+ ## Governed by
21
+
22
+ - [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
@@ -36,3 +36,7 @@ resource_type: AWS::Location::Map
36
36
  - [WAW036](/rules/WAW036.md): Non-ASCII characters in EC2/IAM/CW string properties — rejected at changeset time
37
37
  - [WAW059](/rules/WAW059.md): Wildcard Resource where the declared graph enumerates the touched set — tighten to the consumers' declared Arns
38
38
  - [WAW062](/rules/WAW062.md): Duplicate export name or explicit resource name within a template — fails at deploy time
39
+ - [WAW065](/rules/WAW065.md): Transit Gateway route table has associations but no propagations, or an attachment wired into no route table
40
+ - [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
41
+ - [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
42
+ - [WAW068](/rules/WAW068.md): VPN Gateway or Transit Gateway has only one attached VPN Connection — no redundant path for hybrid connectivity
@@ -35,3 +35,7 @@ resource_type: AWS::EC2::NatGateway
35
35
  - `EniId`
36
36
  - `NatGatewayId`
37
37
  - `RouteTableId`
38
+
39
+ ## Governed by
40
+
41
+ - [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
@@ -17,3 +17,7 @@ resource_type: AWS::EC2::RouteTable
17
17
  ## Attributes
18
18
 
19
19
  - `RouteTableId`
20
+
21
+ ## Governed by
22
+
23
+ - [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
@@ -42,3 +42,5 @@ resource_type: AWS::EC2::Subnet
42
42
  ## Governed by
43
43
 
44
44
  - [WAW061](/rules/WAW061.md): Subnet CidrBlock falls outside its VPC's CidrBlock — fails at deploy time
45
+ - [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
46
+ - [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress
@@ -17,3 +17,8 @@ resource_type: AWS::EC2::SubnetRouteTableAssociation
17
17
  ## Attributes
18
18
 
19
19
  - `Id`
20
+
21
+ ## Governed by
22
+
23
+ - [WAW066](/rules/WAW066.md): Private subnet's route table has no default route, or its default route targets a gateway that does not exist in the template
24
+ - [WAW067](/rules/WAW067.md): A single-AZ NAT gateway serves private subnets across multiple Availability Zones — single point of failure for cross-AZ egress