@intentius/terragucci 0.4.34 → 0.4.35

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.
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://intentius.io/terragucci/schemas/estates/v1/estates.schema.json",
4
+ "title": "terragucci.estates/v1",
5
+ "description": "estates.json at the top of a reports prefix: each estate whose roster a tf-apply wave or an estate migration wrote, with its resource count. Within v1 fields are only added, and an existing field never changes meaning.",
6
+ "type": "object",
7
+ "required": ["schema", "estates"],
8
+ "properties": {
9
+ "schema": { "const": "terragucci.estates/v1" },
10
+ "estates": {
11
+ "type": "array",
12
+ "description": "By estate name.",
13
+ "items": {
14
+ "type": "object",
15
+ "required": ["estate", "count", "at", "project", "root", "roster"],
16
+ "properties": {
17
+ "estate": { "type": "string", "description": "The estate a choudoufu root's live block names, or a stock root's path." },
18
+ "count": { "type": "integer", "description": "How many resources the roster holds." },
19
+ "at": { "type": "string", "description": "When the roster was read: the wave's end, or the migration's write." },
20
+ "project": { "type": "string" },
21
+ "root": { "type": "string" },
22
+ "roster": { "type": "string", "description": "The roster's key, relative to estates.json: estates/<estate>/roster.json." }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
@@ -39,7 +39,7 @@
39
39
  "groups": { "type": "integer" },
40
40
  "totals": { "$ref": "#/$defs/totals" },
41
41
  "refused": { "type": "integer", "description": "Roots that refused to plan." },
42
- "failed": { "type": "integer", "description": "Roots that failed to plan or apply. Absent on rows written before it was kept." },
42
+ "failed": { "type": "integer", "description": "Roots that failed to plan or apply; on a tf-apply wave whose apply failed, every root of the wave. Absent on rows written before it was kept." },
43
43
  "changed": { "type": "integer", "description": "Roots with at least one change; on a tf-drift row, the roots that drifted." },
44
44
  "approval": { "enum": ["waiting", "approved", "not-required"], "description": "A tf-apply wave's gate." },
45
45
  "waiting_since": { "type": "string", "description": "When a waiting wave began waiting for an approval of its digest." },
@@ -177,6 +177,10 @@
177
177
  "rules": { "type": "array", "items": { "type": "string" }, "description": "The ids of the rules that denied, sorted (minor 10)." },
178
178
  "warnings": { "type": "array", "items": { "type": "string" } },
179
179
  "error": { "type": "string" },
180
+ "held_by": { "type": "array", "items": { "type": "string" }, "description": "With hold in policy.outcomes at base: the ids of the hold rules that matched, sorted; its wave waits for an approval (minor 40)." },
181
+ "holds": { "type": "array", "items": { "type": "string" }, "description": "The messages of those hold rules (minor 40)." },
182
+ "allowed_by": { "type": "array", "items": { "type": "string" }, "description": "With allow_unattended in policy.outcomes at base: the ids of the allow_unattended rules that matched, sorted (minor 40)." },
183
+ "overriders": { "type": "array", "items": { "type": "string" }, "description": "With scoped policy.override entries at base: who may override this root's denial by its rules, names then roles with their holders (minor 40)." },
180
184
  "override": {
181
185
  "description": "The policy override that stands for this root's plan and rules (minor 10).",
182
186
  "type": "object",
@@ -357,6 +361,32 @@
357
361
  }
358
362
  }
359
363
  },
364
+ "policy_gate": {
365
+ "type": "object",
366
+ "description": "What the policy's hold and allow_unattended rules did to the wave's gate: held, or unattended when every root that changes something is allowed and none holds; the rules' ids and, on a tf-apply wave, the commit the policy was read at (minor 40).",
367
+ "required": ["outcome", "rules"],
368
+ "properties": {
369
+ "outcome": { "enum": ["held", "unattended"] },
370
+ "rules": { "type": "array", "items": { "type": "string" } },
371
+ "commit": { "type": "string" }
372
+ }
373
+ },
374
+ "approval_rules": {
375
+ "type": "array",
376
+ "description": "The approval_rules entries at base the wave's roots take: what each asks for and, on a tf-apply wave, the approvers of its digest it counted and whether it is met (minor 40).",
377
+ "items": {
378
+ "type": "object",
379
+ "required": ["roots", "count", "approvers", "met"],
380
+ "properties": {
381
+ "roots": { "type": "array", "items": { "type": "string" } },
382
+ "count": { "type": "integer", "minimum": 1 },
383
+ "roles": { "type": "array", "items": { "type": "string" } },
384
+ "not_author": { "type": "boolean" },
385
+ "approvers": { "type": "array", "items": { "type": "string" } },
386
+ "met": { "type": "boolean" }
387
+ }
388
+ }
389
+ },
360
390
  "held_by_steps": {
361
391
  "type": "array",
362
392
  "items": { "type": "string" },