@intentius/chant-lexicon-azure 0.44.1 → 0.44.2

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.
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Landing-zone bootstrap composites (#791, epic #787 C1) — the Azure slice.
2
+ * Landing-zone bootstrap composites — the Azure slice.
3
3
  *
4
4
  * Fixed-shape resources for greenfield creation of the recommended
5
5
  * governance foundation. The evaluability rules (EVL002/004) require
6
6
  * composites to declare a fixed set of resources, so these carry the
7
7
  * foundation only; arbitrary management-group/subscription trees are
8
8
  * authored as config with `landingZoneConfig()` (../governance.ts) and
9
- * reconciled by the Azure cloud warden, and further groups/subscriptions
9
+ * reconciled by an external governance reconciler, and further groups/subscriptions
10
10
  * are declared as ordinary resources.
11
11
  *
12
12
  * A single ARM template cannot mix deployment scopes (AZR030, #1545), so
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Azure governance authoring (#791, epic #787 C1): the desired-state config
3
- * shape the Azure cloud warden reconciles, and `landingZoneConfig()` — the
2
+ * Azure governance authoring: the desired-state config
3
+ * shape an external governance reconciler reconciles, and `landingZoneConfig()` — the
4
4
  * typed authoring layer that emits it.
5
5
  *
6
6
  * This is deliberately NOT a composite. The evaluability rules (EVL002/004,
@@ -9,7 +9,7 @@
9
9
  * the AWS/GCP slices (lexicons/{aws,gcp}/src/governance.ts): authoring emits
10
10
  * config (this module, arbitrary cardinality); resources for greenfield
11
11
  * bootstrap are the fixed-shape composites in `composites/landing-zone.ts`;
12
- * the warden consumes only the config.
12
+ * the reconciler consumes only the config.
13
13
  *
14
14
  * Azure has no OrganizationRoot analog — the tenant and its root management
15
15
  * group come from Entra ID, never from the resource API. Subscriptions the
@@ -31,9 +31,9 @@ export interface PolicyConfig {
31
31
  /** A subscription declared inside a management group. */
32
32
  export interface SubscriptionConfig {
33
33
  name: string;
34
- /** An existing subscription to place. Omitted: the warden creates one via a tenant-scope alias. */
34
+ /** An existing subscription to place. Omitted: the reconciler creates one via a tenant-scope alias. */
35
35
  subscriptionId?: string;
36
- /** Billing scope for subscriptions the warden creates. */
36
+ /** Billing scope for subscriptions the reconciler creates. */
37
37
  billingScope?: string;
38
38
  workload?: "Production" | "DevTest";
39
39
  }
@@ -48,9 +48,9 @@ export interface ManagementGroupConfig {
48
48
  }
49
49
  /**
50
50
  * The desired-state governance tree for one Azure tenant. This is the shape
51
- * the Azure cloud warden loads as config — the Azure counterpart of
51
+ * an external governance reconciler loads as config — the Azure counterpart of
52
52
  * `AwsGovernanceConfig`/`GcpGovernanceConfig`. Cycles map onto the
53
- * governance verbs (#790): the management-group/subscription tree is
53
+ * governance verbs: the management-group/subscription tree is
54
54
  * `org-unit`, policy assignments are `policy-guardrail`, the activity-log
55
55
  * sink is `audit-sink`.
56
56
  */
@@ -110,7 +110,7 @@ export interface LandingZoneConfigProps {
110
110
  activityLogWorkspaceId?: string;
111
111
  }
112
112
  /**
113
- * Author the desired-state tree the Azure cloud warden reconciles. Pure.
113
+ * Author the desired-state tree an external governance reconciler reconciles. Pure.
114
114
  * Throws when the tree assigns a policy name with no definition; only
115
115
  * policies the tree actually assigns are included in the output.
116
116
  */
@@ -1 +1 @@
1
- {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../src/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACrC;AAED,4FAA4F;AAC5F,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,iEAAiE;QACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,qFAAqF;QACrF,+BAA+B,CAAC,EAAE,OAAO,CAAC;KAC3C,CAAC;IACF,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACxD,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,kCAAkC;IAClC,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;KACvC,CAAC;CACH;AAMD,eAAO,MAAM,sBAAsB,EAAE,YAQpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YA4BlC,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAe9E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C,8FACqC,CAAC;AAE9F;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAK9E,CAAC;AAMF,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,2IAA2I;IAC3I,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACzD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mGAAmG;IACnG,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,sBAA2B,GAAG,qBAAqB,CA2C3F"}
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../src/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACrC;AAED,4FAA4F;AAC5F,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,iEAAiE;QACjE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,qFAAqF;QACrF,+BAA+B,CAAC,EAAE,OAAO,CAAC;KAC3C,CAAC;IACF,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACxD,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,kCAAkC;IAClC,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;KACvC,CAAC;CACH;AAMD,eAAO,MAAM,sBAAsB,EAAE,YAQpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YA4BlC,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAe9E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C,8FACqC,CAAC;AAE9F;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAK9E,CAAC;AAMF,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,2IAA2I;IAC3I,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACzD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mGAAmG;IACnG,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,sBAA2B,GAAG,qBAAqB,CA2C3F"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "f770263394af1084f4898fa1eab75808c183729510a0b6dc9b8a2dde440b10dd",
4
+ "manifest.json": "2145b0e429f811b3dd11e55f7bc68a9668976e280d1d8c6e7d520c10eacc2ccb",
5
5
  "meta.json": "760a8d2e359be71f29a990339cb075701fe668e6275dfa923b9d112474ba660a",
6
6
  "types/index.d.ts": "c5a8a3e107b07a11ac992fa7d6d136fe1a71c99a89c57921b3e4bc86361adb3f",
7
7
  "rules/hardcoded-location.ts": "a9b1d1cec93f2ca9c5206641f53fc9621cefcfd2c00b3ab89c194b30a75fa949",
@@ -29,13 +29,13 @@
29
29
  "rules/azr028.ts": "cbb0b780f62478b3cf26261e28a41f231f202d6bb8905c96b84a1e4080df9a1a",
30
30
  "rules/azr029.ts": "18e6cef437207239aa8c8f1b382e0f95661cb0bca0de83ca293f66f0db446ee0",
31
31
  "rules/azr030.ts": "81ede36e17290b860d51d1a0d20769383f903c5cc84036168f1d74b9befe065e",
32
- "rules/azr031.ts": "07e2fb24ebb5f006351a4417f877e3230600141e3091e12d1a346982e8678076",
33
- "rules/azr032.ts": "cbf23c9b22aeb51a18c77ea410502f5fc0584870f723aa3c8e0b0a87fd7cce4b",
34
- "rules/azr033.ts": "54c628f21b45f0de0639807baf025d8477a8b352326b3ff7d1f3f9f80db43506",
32
+ "rules/azr031.ts": "7f0654c9dce1e3a1a86818d8b4d0201fb4600021f7a4a757c36b1513fe16e0fd",
33
+ "rules/azr032.ts": "ea94cc7fdece0812c43898c76c4b8a115a306157b741fe3b76fe726335f6c2d2",
34
+ "rules/azr033.ts": "d440ec79a1563160bb7c8cc29c81880da71997c872215f14ec3be18f05a07ed3",
35
35
  "skills/chant-azure.md": "86399e4fafd35cdf56670b32dbff5db42a4bfa1453b25231c4ee15eea9a2a1b9",
36
36
  "skills/chant-azure-security.md": "95ab789202662f60b43cf2fce1ae549cbcf5b689306481dabb656847281879ff",
37
37
  "skills/chant-azure-patterns.md": "1a3bacfac612826b77332d2692a59195638db9f1b5e8ea2eda7579621d25f603",
38
38
  "skills/chant-azure-aks.md": "2d4e0098c1a22b54ffadd410564d9df0f3a04cb4eb7c6261f20ae33106e7aca8"
39
39
  },
40
- "composite": "ef0be6524c75d7bdb8422478c3f72445f976bf855ce9b610638b2d35af5bd0f1"
40
+ "composite": "7f758770238b4b502b32ce21b88475570a479cf95306ee84a899fc1838c9a2a2"
41
41
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR031: Policy Assignment Not Enforced (#793, epic #787 C3)
2
+ * AZR031: Policy Assignment Not Enforced
3
3
  *
4
4
  * Flags Microsoft.Authorization/policyAssignments with enforcementMode
5
5
  * DoNotEnforce. The assignment stays visible in the tree while denying
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR032: Policy Definition Assigned Nowhere (#793, epic #787 C3)
2
+ * AZR032: Policy Definition Assigned Nowhere
3
3
  *
4
4
  * Flags custom Microsoft.Authorization/policyDefinitions with no
5
5
  * policyAssignments referencing them in the same template. The
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR033: Subscriptions May Leave the Tenant (#793, epic #787 C3)
2
+ * AZR033: Subscriptions May Leave the Tenant
3
3
  *
4
4
  * Flags a Microsoft.Subscription/policies resource that sets
5
5
  * blockSubscriptionsLeavingTenant to false — the tenant-level leave-block
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azure",
3
- "version": "0.44.1",
3
+ "version": "0.44.2",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "Azure",
6
6
  "intrinsics": [
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR031: Policy Assignment Not Enforced (#793, epic #787 C3)
2
+ * AZR031: Policy Assignment Not Enforced
3
3
  *
4
4
  * Flags Microsoft.Authorization/policyAssignments with enforcementMode
5
5
  * DoNotEnforce. The assignment stays visible in the tree while denying
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR032: Policy Definition Assigned Nowhere (#793, epic #787 C3)
2
+ * AZR032: Policy Definition Assigned Nowhere
3
3
  *
4
4
  * Flags custom Microsoft.Authorization/policyDefinitions with no
5
5
  * policyAssignments referencing them in the same template. The
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR033: Subscriptions May Leave the Tenant (#793, epic #787 C3)
2
+ * AZR033: Subscriptions May Leave the Tenant
3
3
  *
4
4
  * Flags a Microsoft.Subscription/policies resource that sets
5
5
  * blockSubscriptionsLeavingTenant to false — the tenant-level leave-block
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-azure",
3
- "version": "0.44.1",
3
+ "version": "0.44.2",
4
4
  "description": "Azure lexicon for chant — declarative IaC in TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -74,7 +74,7 @@
74
74
  "typescript": "^5.9.3"
75
75
  },
76
76
  "peerDependencies": {
77
- "@intentius/chant": "^0.44.1",
77
+ "@intentius/chant": "^0.44.2",
78
78
  "typescript": "^5.9.3"
79
79
  }
80
80
  }
@@ -8,7 +8,7 @@ function p(member: unknown): Record<string, any> {
8
8
  return (member as any).props;
9
9
  }
10
10
 
11
- describe("GovernanceFoundation (#791)", () => {
11
+ describe("GovernanceFoundation", () => {
12
12
  test("declares the foundation management groups and the subscription tenant policy", () => {
13
13
  const lz = GovernanceFoundation({});
14
14
  expect(Object.keys(lz.members)).toEqual([
@@ -47,7 +47,7 @@ describe("GovernanceFoundation (#791)", () => {
47
47
  });
48
48
  });
49
49
 
50
- describe("GovernanceBaseline (#791)", () => {
50
+ describe("GovernanceBaseline", () => {
51
51
  test("defines and assigns the two baseline policies", () => {
52
52
  const gb = GovernanceBaseline({});
53
53
  expect(Object.keys(gb.members)).toEqual([
@@ -76,7 +76,7 @@ describe("GovernanceBaseline (#791)", () => {
76
76
  });
77
77
  });
78
78
 
79
- describe("LocationRestriction and ActivityLogSink (#791)", () => {
79
+ describe("LocationRestriction and ActivityLogSink", () => {
80
80
  test("LocationRestriction defines and assigns the allowed-locations policy", () => {
81
81
  const lr = LocationRestriction({ locations: ["westeurope"] });
82
82
  const def = p(lr.definitionLocationRestriction);
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Landing-zone bootstrap composites (#791, epic #787 C1) — the Azure slice.
2
+ * Landing-zone bootstrap composites — the Azure slice.
3
3
  *
4
4
  * Fixed-shape resources for greenfield creation of the recommended
5
5
  * governance foundation. The evaluability rules (EVL002/004) require
6
6
  * composites to declare a fixed set of resources, so these carry the
7
7
  * foundation only; arbitrary management-group/subscription trees are
8
8
  * authored as config with `landingZoneConfig()` (../governance.ts) and
9
- * reconciled by the Azure cloud warden, and further groups/subscriptions
9
+ * reconciled by an external governance reconciler, and further groups/subscriptions
10
10
  * are declared as ordinary resources.
11
11
  *
12
12
  * A single ARM template cannot mix deployment scopes (AZR030, #1545), so
@@ -1,7 +1,7 @@
1
1
  import { describe, expect, test } from "vitest";
2
2
  import { landingZoneConfig, FOUNDATION_MANAGEMENT_GROUPS } from "./governance";
3
3
 
4
- describe("landingZoneConfig (#791)", () => {
4
+ describe("landingZoneConfig", () => {
5
5
  test("the default is the recommended foundation", () => {
6
6
  const cfg = landingZoneConfig();
7
7
  expect(Object.keys(cfg.managementGroups)).toEqual(["Security", "Infrastructure", "Sandbox", "Workloads"]);
package/src/governance.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Azure governance authoring (#791, epic #787 C1): the desired-state config
3
- * shape the Azure cloud warden reconciles, and `landingZoneConfig()` — the
2
+ * Azure governance authoring: the desired-state config
3
+ * shape an external governance reconciler reconciles, and `landingZoneConfig()` — the
4
4
  * typed authoring layer that emits it.
5
5
  *
6
6
  * This is deliberately NOT a composite. The evaluability rules (EVL002/004,
@@ -9,7 +9,7 @@
9
9
  * the AWS/GCP slices (lexicons/{aws,gcp}/src/governance.ts): authoring emits
10
10
  * config (this module, arbitrary cardinality); resources for greenfield
11
11
  * bootstrap are the fixed-shape composites in `composites/landing-zone.ts`;
12
- * the warden consumes only the config.
12
+ * the reconciler consumes only the config.
13
13
  *
14
14
  * Azure has no OrganizationRoot analog — the tenant and its root management
15
15
  * group come from Entra ID, never from the resource API. Subscriptions the
@@ -19,7 +19,7 @@
19
19
  */
20
20
 
21
21
  // ---------------------------------------------------------------------------
22
- // The desired-state config shape the Azure cloud warden consumes
22
+ // The desired-state config shape an external governance reconciler consumes
23
23
  // ---------------------------------------------------------------------------
24
24
 
25
25
  /** A custom policy definition, keyed by name in `AzureGovernanceConfig.policies`. */
@@ -37,9 +37,9 @@ export interface PolicyConfig {
37
37
  /** A subscription declared inside a management group. */
38
38
  export interface SubscriptionConfig {
39
39
  name: string;
40
- /** An existing subscription to place. Omitted: the warden creates one via a tenant-scope alias. */
40
+ /** An existing subscription to place. Omitted: the reconciler creates one via a tenant-scope alias. */
41
41
  subscriptionId?: string;
42
- /** Billing scope for subscriptions the warden creates. */
42
+ /** Billing scope for subscriptions the reconciler creates. */
43
43
  billingScope?: string;
44
44
  workload?: "Production" | "DevTest";
45
45
  }
@@ -56,9 +56,9 @@ export interface ManagementGroupConfig {
56
56
 
57
57
  /**
58
58
  * The desired-state governance tree for one Azure tenant. This is the shape
59
- * the Azure cloud warden loads as config — the Azure counterpart of
59
+ * an external governance reconciler loads as config — the Azure counterpart of
60
60
  * `AwsGovernanceConfig`/`GcpGovernanceConfig`. Cycles map onto the
61
- * governance verbs (#790): the management-group/subscription tree is
61
+ * governance verbs: the management-group/subscription tree is
62
62
  * `org-unit`, policy assignments are `policy-guardrail`, the activity-log
63
63
  * sink is `audit-sink`.
64
64
  */
@@ -188,7 +188,7 @@ export interface LandingZoneConfigProps {
188
188
  }
189
189
 
190
190
  /**
191
- * Author the desired-state tree the Azure cloud warden reconciles. Pure.
191
+ * Author the desired-state tree an external governance reconciler reconciles. Pure.
192
192
  * Throws when the tree assigns a policy name with no definition; only
193
193
  * policies the tree actually assigns are included in the output.
194
194
  */
package/src/index.ts CHANGED
@@ -76,8 +76,8 @@ export {
76
76
  ActivityLogSink, type ActivityLogSinkProps, type ActivityLogSinkResult,
77
77
  } from "./composites/index";
78
78
 
79
- // Azure governance authoring (#791): the desired-state config the Azure
80
- // cloud warden reconciles, and the typed landing-zone authoring layer.
79
+ // Azure governance authoring: the desired-state config the Azure
80
+ // external governance reconciler applies, and the typed landing-zone authoring layer.
81
81
  export {
82
82
  landingZoneConfig, locationRestriction,
83
83
  DENY_CLASSIC_RESOURCES, DENY_UNMANAGED_DISKS,
@@ -29,7 +29,7 @@ export const azureAuditCatalog: Record<string, RuleMeta> = {
29
29
  AZR029: auditRule("AZR029", "merge-worthy", "guidance", "Managed disk missing encryption", "Enable encryption for data at rest.", { authority: [AZ_SEC] }),
30
30
  AZR030: auditRule("AZR030", "merge-worthy", "guidance", "Resource at unsupported template scope", "Move the resource to a project deployed at a scope its schema supports.", { category: "correctness" }),
31
31
 
32
- // #793 — governance posture regressions (epic #787 C3).
32
+ // governance posture regressions.
33
33
  AZR031: auditRule("AZR031", "merge-worthy", "guidance", "Policy assignment not enforced (DoNotEnforce)", "Set enforcementMode to Default so the assigned guardrail applies.", { authority: [AZ_SEC] }),
34
34
  AZR032: auditRule("AZR032", "merge-worthy", "guidance", "Custom policy definition assigned nowhere", "Pair the policy definition with a policy assignment — unassigned it enforces nothing.", { authority: [AZ_SEC] }),
35
35
  AZR033: auditRule("AZR033", "merge-worthy", "guidance", "Subscriptions may leave the tenant", "Set blockSubscriptionsLeavingTenant: true on the Microsoft.Subscription/policies resource.", { authority: [AZ_SEC] }),
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR031: Policy Assignment Not Enforced (#793, epic #787 C3)
2
+ * AZR031: Policy Assignment Not Enforced
3
3
  *
4
4
  * Flags Microsoft.Authorization/policyAssignments with enforcementMode
5
5
  * DoNotEnforce. The assignment stays visible in the tree while denying
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR032: Policy Definition Assigned Nowhere (#793, epic #787 C3)
2
+ * AZR032: Policy Definition Assigned Nowhere
3
3
  *
4
4
  * Flags custom Microsoft.Authorization/policyDefinitions with no
5
5
  * policyAssignments referencing them in the same template. The
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AZR033: Subscriptions May Leave the Tenant (#793, epic #787 C3)
2
+ * AZR033: Subscriptions May Leave the Tenant
3
3
  *
4
4
  * Flags a Microsoft.Subscription/policies resource that sets
5
5
  * blockSubscriptionsLeavingTenant to false — the tenant-level leave-block
package/src/serializer.ts CHANGED
@@ -187,7 +187,7 @@ function serializeToTemplate(
187
187
  // pin overrides the inference — policy definitions and assignments
188
188
  // deploy at several scopes, so a management-group guardrail project
189
189
  // cannot be told from a subscription one by its resource set alone
190
- // (#791); AZR030 still flags resources the pinned scope cannot hold.
190
+ //; AZR030 still flags resources the pinned scope cannot hold.
191
191
  let pinnedScope: DeployScope | undefined;
192
192
  const emittedTypes: string[] = [];
193
193
  for (const [, entity] of entities) {
package/src/validate.ts CHANGED
@@ -25,7 +25,7 @@ const REQUIRED_NAMES = [
25
25
  "SqlServer", "SqlDatabase",
26
26
  // Security & Identity
27
27
  "KeyVault", "ManagedIdentity",
28
- // Governance — org hierarchy + policy primitives (#1545). #787 once claimed
28
+ // Governance — org hierarchy + policy primitives (#1545). once claimed
29
29
  // these existed when they did not; this gate keeps them from vanishing again.
30
30
  "ManagementGroup", "SubscriptionAlias", "PolicyDefinition", "PolicyAssignment",
31
31
  // DNS & Traffic