@intentius/chant 0.85.0 → 0.87.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 (129) hide show
  1. package/dist/cli/main.d.ts.map +1 -1
  2. package/dist/cli/registry.d.ts +13 -1
  3. package/dist/cli/registry.d.ts.map +1 -1
  4. package/dist/lifecycle/gate-ledger.d.ts +13 -0
  5. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  6. package/dist/workspace/__fixtures__/sessions.d.ts +23 -0
  7. package/dist/workspace/__fixtures__/sessions.d.ts.map +1 -0
  8. package/dist/workspace/checks/records.d.ts +1 -0
  9. package/dist/workspace/checks/records.d.ts.map +1 -1
  10. package/dist/workspace/checks.d.ts +4 -0
  11. package/dist/workspace/checks.d.ts.map +1 -1
  12. package/dist/workspace/composites.d.ts +14 -1
  13. package/dist/workspace/composites.d.ts.map +1 -1
  14. package/dist/workspace/conformance/index.d.ts +211 -0
  15. package/dist/workspace/conformance/index.d.ts.map +1 -0
  16. package/dist/workspace/conformance/vitest.d.ts +11 -0
  17. package/dist/workspace/conformance/vitest.d.ts.map +1 -0
  18. package/dist/workspace/declaration.d.ts +28 -0
  19. package/dist/workspace/declaration.d.ts.map +1 -1
  20. package/dist/workspace/declaration.schema.json +40 -0
  21. package/dist/workspace/declared-kinds.d.ts +43 -0
  22. package/dist/workspace/declared-kinds.d.ts.map +1 -0
  23. package/dist/workspace/graph-cli.d.ts +11 -0
  24. package/dist/workspace/graph-cli.d.ts.map +1 -1
  25. package/dist/workspace/intent-cli.d.ts +2 -1
  26. package/dist/workspace/intent-cli.d.ts.map +1 -1
  27. package/dist/workspace/intent-joins.d.ts +45 -8
  28. package/dist/workspace/intent-joins.d.ts.map +1 -1
  29. package/dist/workspace/intent.d.ts +71 -7
  30. package/dist/workspace/intent.d.ts.map +1 -1
  31. package/dist/workspace/ls.d.ts +31 -1
  32. package/dist/workspace/ls.d.ts.map +1 -1
  33. package/dist/workspace/reason-codes.d.ts +47 -4
  34. package/dist/workspace/reason-codes.d.ts.map +1 -1
  35. package/dist/workspace/record-sessions.d.ts +51 -0
  36. package/dist/workspace/record-sessions.d.ts.map +1 -0
  37. package/dist/workspace/record-source.d.ts +2 -0
  38. package/dist/workspace/record-source.d.ts.map +1 -1
  39. package/dist/workspace/records-cli.d.ts +71 -4
  40. package/dist/workspace/records-cli.d.ts.map +1 -1
  41. package/dist/workspace/records-since.d.ts +90 -0
  42. package/dist/workspace/records-since.d.ts.map +1 -0
  43. package/dist/workspace/records-write.d.ts +171 -0
  44. package/dist/workspace/records-write.d.ts.map +1 -0
  45. package/dist/workspace/records.d.ts +244 -15
  46. package/dist/workspace/records.d.ts.map +1 -1
  47. package/dist/workspace/runtimes.d.ts +60 -0
  48. package/dist/workspace/runtimes.d.ts.map +1 -0
  49. package/dist/workspace/status-gates.d.ts +90 -0
  50. package/dist/workspace/status-gates.d.ts.map +1 -0
  51. package/dist/workspace/status.d.ts +17 -0
  52. package/dist/workspace/status.d.ts.map +1 -1
  53. package/dist/workspace/trust/seal.d.ts +85 -0
  54. package/dist/workspace/trust/seal.d.ts.map +1 -0
  55. package/dist/workspace/trust/ssh-commit.d.ts +7 -0
  56. package/dist/workspace/trust/ssh-commit.d.ts.map +1 -1
  57. package/dist/workspace/work.d.ts +56 -0
  58. package/dist/workspace/work.d.ts.map +1 -0
  59. package/package.json +19 -1
  60. package/src/cli/main.ts +55 -3
  61. package/src/cli/registry.ts +13 -1
  62. package/src/lifecycle/gate-ledger.ts +14 -0
  63. package/src/workspace/__fixtures__/sessions.ts +66 -0
  64. package/src/workspace/checks/records.ts +19 -0
  65. package/src/workspace/checks.test.ts +2 -0
  66. package/src/workspace/checks.ts +7 -1
  67. package/src/workspace/composites.schema.json +65 -3
  68. package/src/workspace/composites.test.ts +95 -5
  69. package/src/workspace/composites.ts +28 -7
  70. package/src/workspace/conformance/__fixture__/app/package.json +7 -0
  71. package/src/workspace/conformance/__fixture__/app/src/server.mjs +29 -0
  72. package/src/workspace/conformance/__fixture__/decisions/decision.kind.mjs +32 -0
  73. package/src/workspace/conformance/__fixture__/decisions/decision.schema.json +376 -0
  74. package/src/workspace/conformance/__fixture__/decisions/fix-001-how-the-app-is-deployed.md +40 -0
  75. package/src/workspace/conformance/__fixture__/delivery/chant.config.ts +7 -0
  76. package/src/workspace/conformance/__fixture__/delivery/lexicon/index.ts +26 -0
  77. package/src/workspace/conformance/__fixture__/delivery/package.json +7 -0
  78. package/src/workspace/conformance/__fixture__/delivery/src/app.component.ts +14 -0
  79. package/src/workspace/conformance/__fixture__/delivery/src/app.ts +4 -0
  80. package/src/workspace/conformance/conformance.test.ts +149 -0
  81. package/src/workspace/conformance/index.mjs +31 -0
  82. package/src/workspace/conformance/index.ts +453 -0
  83. package/src/workspace/conformance/vitest.ts +62 -0
  84. package/src/workspace/declaration.schema.json +40 -0
  85. package/src/workspace/declaration.ts +62 -0
  86. package/src/workspace/declared-kinds.test.ts +321 -0
  87. package/src/workspace/declared-kinds.ts +76 -0
  88. package/src/workspace/graph-cli.ts +8 -0
  89. package/src/workspace/intent-cli.ts +29 -6
  90. package/src/workspace/intent-gaps.test.ts +217 -0
  91. package/src/workspace/intent-joins.test.ts +60 -0
  92. package/src/workspace/intent-joins.ts +71 -19
  93. package/src/workspace/intent.schema.json +304 -7
  94. package/src/workspace/intent.test.ts +99 -0
  95. package/src/workspace/intent.ts +365 -46
  96. package/src/workspace/ls.schema.json +34 -0
  97. package/src/workspace/ls.ts +69 -4
  98. package/src/workspace/read-contract.test.ts +30 -9
  99. package/src/workspace/reason-codes.test.ts +16 -4
  100. package/src/workspace/reason-codes.ts +55 -4
  101. package/src/workspace/record-assets.test.ts +3 -1
  102. package/src/workspace/record-sessions.ts +105 -0
  103. package/src/workspace/record-source.ts +14 -5
  104. package/src/workspace/records-amend.schema.json +167 -0
  105. package/src/workspace/records-cli.ts +308 -19
  106. package/src/workspace/records-contract.test.ts +57 -2
  107. package/src/workspace/records-formats.test.ts +640 -0
  108. package/src/workspace/records-new.schema.json +158 -0
  109. package/src/workspace/records-quorum.test.ts +196 -0
  110. package/src/workspace/records-review.schema.json +227 -0
  111. package/src/workspace/records-sessions.test.ts +108 -0
  112. package/src/workspace/records-since.schema.json +193 -0
  113. package/src/workspace/records-since.test.ts +174 -0
  114. package/src/workspace/records-since.ts +259 -0
  115. package/src/workspace/records-write-contract.test.ts +125 -0
  116. package/src/workspace/records-write.test.ts +373 -0
  117. package/src/workspace/records-write.ts +765 -0
  118. package/src/workspace/records.schema.json +202 -9
  119. package/src/workspace/records.ts +700 -41
  120. package/src/workspace/runtimes.ts +107 -0
  121. package/src/workspace/status-contract.test.ts +163 -0
  122. package/src/workspace/status-gates.ts +215 -0
  123. package/src/workspace/status.schema.json +69 -3
  124. package/src/workspace/status.ts +35 -2
  125. package/src/workspace/trust/seal.test.ts +232 -0
  126. package/src/workspace/trust/seal.ts +195 -0
  127. package/src/workspace/trust/ssh-commit.ts +2 -2
  128. package/src/workspace/work.test.ts +390 -0
  129. package/src/workspace/work.ts +163 -0
@@ -3,9 +3,11 @@
3
3
  *
4
4
  * A record kind is data. It says where its records live, which JSON Schema
5
5
  * they follow and which of their states are closed. This module reads every
6
- * record a kind locates, parses its front matter as the JSON subset of YAML,
6
+ * record a kind locates, parses its structured core (the front matter, as the
7
+ * JSON subset of YAML, or the whole file as one I-JSON object, ws-053),
7
8
  * validates it against the kind's schema and derives supersession from the
8
- * records' own `supersedes` links. It never writes a record.
9
+ * records' own `supersedes` links. It never writes a record; `records-write.ts`
10
+ * does, through the rules here (#2670).
9
11
  *
10
12
  * A record that fails any of that is still returned, with reason codes, and the
11
13
  * read succeeds. Only a failure to read the kind, its schema or the revision is
@@ -17,22 +19,46 @@
17
19
  */
18
20
  import { z } from "zod";
19
21
  import { type AssetPin } from "./record-assets.js";
22
+ import { type SessionCitation } from "./record-sessions.js";
20
23
  import type { RecordSource } from "./record-source.js";
21
24
  import type { WorkspaceTree } from "./tree.js";
25
+ import type { DecisionWork, WorkLink, WorkWarningCode } from "./work.js";
22
26
  /**
23
27
  * Why one record is not valid. The list is closed: a reader may switch on it,
24
28
  * and a new code is a contract change (#2536).
25
29
  */
26
- export declare const RECORD_REASON_CODES: readonly ["record-unparseable", "record-schema-invalid", "record-id-duplicate", "record-supersedes-unknown", "record-supersedes-conflict"];
30
+ export declare const RECORD_REASON_CODES: readonly ["record-unparseable", "record-schema-invalid", "record-id-duplicate", "record-supersedes-unknown", "record-supersedes-conflict", "session-seal-mismatch", "session-verdict-unknown-record"];
27
31
  export type RecordReasonCode = (typeof RECORD_REASON_CODES)[number];
28
32
  /**
29
33
  * Why a record carries a warning. Closed, like the reason codes. A warning
30
34
  * never makes a record invalid, and `--current` still lists the record.
31
35
  */
32
- export declare const RECORD_WARNING_CODES: readonly ["asset-drift", "asset-missing", "asset-stale", "record-supersedes-pending", "record-no-evidence"];
36
+ export declare const RECORD_WARNING_CODES: readonly ["asset-drift", "asset-missing", "asset-stale", "record-supersedes-pending", "record-no-evidence", "review-undigested"];
33
37
  export type RecordWarningCode = (typeof RECORD_WARNING_CODES)[number];
38
+ /**
39
+ * Why a verdict does not count toward a record's quorum (#2671). Closed, like
40
+ * the reason codes. A verdict with none of these counts.
41
+ */
42
+ export declare const REVIEW_REASON_CODES: readonly ["review-decider", "review-agent", "review-duplicate", "review-older-digest", "review-unattested"];
43
+ export type ReviewReasonCode = (typeof REVIEW_REASON_CODES)[number];
44
+ /**
45
+ * Why a verdict's seal is not attested (#2687). Closed, like the reason
46
+ * codes. Every verdict in the quorum carries one of these in its
47
+ * `attestation`, unless its seal verified.
48
+ */
49
+ export declare const SEAL_REASON_CODES: readonly ["seal-missing", "seal-signer-unlisted", "seal-signature-invalid", "seal-unverifiable"];
50
+ export type SealCode = (typeof SEAL_REASON_CODES)[number];
51
+ /** What a verdict's seal establishes (#2687). See `trust/seal.ts`. */
52
+ export interface VerdictAttestation {
53
+ /** Why the verdict is not attested. Absent when its seal verified. */
54
+ code?: SealCode;
55
+ message: string;
56
+ /** The fingerprint of the key that made the signature, when it was checked. */
57
+ key?: string;
58
+ }
34
59
  export interface RecordWarning {
35
- code: RecordWarningCode;
60
+ /** A work kind's records also carry the codes of `WORK_WARNING_CODES` (#2683). */
61
+ code: RecordWarningCode | WorkWarningCode;
36
62
  message: string;
37
63
  }
38
64
  /**
@@ -45,6 +71,9 @@ export declare class RecordReadError extends Error {
45
71
  readonly code: ReadErrorCode;
46
72
  constructor(code: ReadErrorCode, message: string);
47
73
  }
74
+ /** The formats a kind file may name. Closed. */
75
+ export declare const RECORD_FORMATS: readonly ["markdown-front-matter", "json"];
76
+ export type RecordFormat = (typeof RECORD_FORMATS)[number];
48
77
  /** The data a kind file exports as `recordKind`. */
49
78
  export declare const recordKindSchema: z.ZodObject<{
50
79
  name: z.ZodString;
@@ -52,19 +81,27 @@ export declare const recordKindSchema: z.ZodObject<{
52
81
  dir: z.ZodString;
53
82
  match: z.ZodString;
54
83
  }, z.core.$strict>;
55
- format: z.ZodLiteral<"markdown-front-matter">;
84
+ format: z.ZodEnum<{
85
+ json: "json";
86
+ "markdown-front-matter": "markdown-front-matter";
87
+ }>;
56
88
  schema: z.ZodObject<{
57
89
  id: z.ZodString;
58
90
  path: z.ZodString;
91
+ refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
92
+ id: z.ZodString;
93
+ path: z.ZodString;
94
+ }, z.core.$strict>>>;
59
95
  }, z.core.$strict>;
60
- idField: z.ZodString;
61
- stateField: z.ZodString;
62
- states: z.ZodArray<z.ZodString>;
63
- closedStates: z.ZodArray<z.ZodString>;
64
- supersedes: z.ZodObject<{
96
+ idField: z.ZodOptional<z.ZodString>;
97
+ idFrom: z.ZodOptional<z.ZodLiteral<"sha256">>;
98
+ stateField: z.ZodOptional<z.ZodString>;
99
+ states: z.ZodOptional<z.ZodArray<z.ZodString>>;
100
+ closedStates: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ supersedes: z.ZodOptional<z.ZodObject<{
65
102
  field: z.ZodString;
66
- key: z.ZodString;
67
- }, z.core.$strict>;
103
+ key: z.ZodOptional<z.ZodString>;
104
+ }, z.core.$strict>>;
68
105
  approval: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
69
106
  pins: z.ZodOptional<z.ZodObject<{
70
107
  field: z.ZodString;
@@ -72,6 +109,25 @@ export declare const recordKindSchema: z.ZodObject<{
72
109
  constrains: z.ZodOptional<z.ZodObject<{
73
110
  field: z.ZodString;
74
111
  }, z.core.$strict>>;
112
+ reviews: z.ZodOptional<z.ZodObject<{
113
+ field: z.ZodString;
114
+ decider: z.ZodString;
115
+ }, z.core.$strict>>;
116
+ session: z.ZodOptional<z.ZodObject<{
117
+ verdicts: z.ZodString;
118
+ seal: z.ZodString;
119
+ subjects: z.ZodObject<{
120
+ kind: z.ZodString;
121
+ }, z.core.$strict>;
122
+ }, z.core.$strict>>;
123
+ work: z.ZodOptional<z.ZodObject<{
124
+ needs: z.ZodString;
125
+ implements: z.ZodString;
126
+ decisions: z.ZodString;
127
+ open: z.ZodString;
128
+ done: z.ZodString;
129
+ closedOn: z.ZodString;
130
+ }, z.core.$strict>>;
75
131
  }, z.core.$strict>;
76
132
  export type RecordKind = z.infer<typeof recordKindSchema>;
77
133
  /** A kind as loaded: its data, where it came from, and its schema. */
@@ -82,6 +138,8 @@ export interface LoadedRecordKind {
82
138
  /** Absolute path of the records directory in the working tree. */
83
139
  dir: string;
84
140
  schema: Record<string, unknown>;
141
+ /** The schema files `schema.refs` names, in order (ws-053). Empty without it. */
142
+ refs: Record<string, unknown>[];
85
143
  }
86
144
  /**
87
145
  * Import the kind file at `path` through the path loader lexicons use (#2520).
@@ -104,6 +162,140 @@ export type FrontMatter = {
104
162
  * cannot hold, are refused, so the same text always reads as the same JSON.
105
163
  */
106
164
  export declare function parseFrontMatter(text: string): FrontMatter;
165
+ /**
166
+ * A JSON record: the whole file is one object, read as I-JSON (RFC 7493)
167
+ * requires on the two points JSON.parse lets through (ws-053). A top-level
168
+ * value other than an object is refused, and so is a member name that repeats
169
+ * within one object, at any depth, which JSON.parse accepts by keeping the
170
+ * last value. Names compare after their escapes are decoded, so `"a"` and
171
+ * `"\u0061"` are the same name. A number too large for a double is refused as
172
+ * front matter's is.
173
+ */
174
+ export declare function parseJsonRecord(text: string): FrontMatter;
175
+ /** A record's structured core, parsed as the kind's format says. */
176
+ export declare function parseRecord(format: RecordFormat, text: string): FrontMatter;
177
+ /**
178
+ * The digest a review verdict names: the lowercase hex SHA-256 of the record
179
+ * file's text with its reviews block taken out of the front matter (#2672), or
180
+ * for a JSON record its reviews member taken out of the object (ws-053).
181
+ * Adding, changing or removing a verdict leaves it as it was; any other edit
182
+ * to the file changes it, so a verdict given before an amendment stops
183
+ * counting.
184
+ *
185
+ * The rule, which a hand-editor can follow with a text editor and
186
+ * `sha256sum`:
187
+ *
188
+ * 1. Line endings become LF (CRLF and a lone CR each become one LF).
189
+ * 2. When the text starts with a `---` line and a later line is exactly
190
+ * `---`, the lines between them are the front matter. In it, the line
191
+ * that starts, at column 0, with the key `field` (bare, or in single or
192
+ * double quotes), optional spaces or tabs and a `:`, is removed, and so
193
+ * is every line after it, up to the closing `---`, that is empty or
194
+ * starts with a space, a tab, `#` or `-`. Removal stops at the first
195
+ * other line. Everything else, the `---` lines and the body included, is
196
+ * kept byte for byte.
197
+ * 3. The digest is the SHA-256 of the result's UTF-8 bytes.
198
+ *
199
+ * Text with no front matter, or no such key, is hashed after step 1 alone.
200
+ * A writer that adds a verdict must change only the reviews block: a
201
+ * reformatted front matter is a new digest, and every earlier verdict stops
202
+ * counting.
203
+ */
204
+ export declare function recordTextDigest(text: string, field?: string | null, format?: RecordFormat): string;
205
+ /** The quorum a workspace sets when its declaration names none: two verdicts besides the decider's (#2555). */
206
+ export declare const DEFAULT_QUORUM = 2;
207
+ /** A principal as the quorum compares it: NFKC, trimmed and lower-cased, so `alice` and `Alice ` are one reviewer (#2671). */
208
+ export declare function normalisePrincipal(name: string): string;
209
+ /** One verdict as the quorum reads it. */
210
+ export interface QuorumVerdict {
211
+ /** The entry's position in the record's reviews list, from 0. */
212
+ index: number;
213
+ /** The reviewer, normalised. */
214
+ principal: string;
215
+ /** The reviewer as written. */
216
+ reviewer: string;
217
+ verdict: "agree" | "dissent" | "abstain";
218
+ /** The digest the verdict names, or null when it names none. */
219
+ digest: string | null;
220
+ /**
221
+ * true when its seal verifies for the reviewer against the signers at base;
222
+ * false when a seal is missing under an active policy, or fails; null when
223
+ * nothing here can say (#2687).
224
+ */
225
+ attested: boolean | null;
226
+ attestation: VerdictAttestation;
227
+ /** Why it does not count. Absent on a counted verdict. */
228
+ reason?: {
229
+ code: ReviewReasonCode;
230
+ message: string;
231
+ };
232
+ }
233
+ /** A dissent that is neither addressed nor withdrawn. */
234
+ export interface OpenConcern {
235
+ index: number;
236
+ principal: string;
237
+ reviewer: string;
238
+ note: string | null;
239
+ /** The proposed decision the dissent opened, when it names one. */
240
+ proposes?: string;
241
+ }
242
+ export interface Quorum {
243
+ /** How many counted agree verdicts, besides the decider's, the record needs. */
244
+ need: number;
245
+ /** Whether `need` comes from the workspace declaration or is the default. */
246
+ needFrom: "declaration" | "default";
247
+ /** Counted verdicts that agree. */
248
+ agreed: number;
249
+ /** Verdicts that count: one per principal, the latest, after the exclusions. */
250
+ counted: QuorumVerdict[];
251
+ /** Verdicts that don't, each with its reason. */
252
+ notCounted: QuorumVerdict[];
253
+ openConcerns: OpenConcern[];
254
+ /** `agreed` reaches `need`. */
255
+ met: boolean;
256
+ /** `met`, with at least one open concern. A met quorum with an open concern is never consensus (RFC 7282). */
257
+ metWithObjections: boolean;
258
+ }
259
+ export interface QuorumOptions {
260
+ need: number;
261
+ needFrom: "declaration" | "default";
262
+ /** Normalised principals that hold the agent role. */
263
+ agents: ReadonlySet<string>;
264
+ /** Whether an attestation policy is active, so a verdict needs a seal to count. */
265
+ attestation: boolean;
266
+ /**
267
+ * Checks one verdict's seal (#2687), as `trust/seal.ts` does against the
268
+ * policy at base. Without it no seal is checked: a sealed verdict is
269
+ * `seal-unverifiable`, so under an active policy none counts.
270
+ */
271
+ verifySeal?: (v: SealInput) => {
272
+ attested: boolean | null;
273
+ } & VerdictAttestation;
274
+ }
275
+ /** What a seal check reads of one verdict. */
276
+ export interface SealInput {
277
+ record: string | null;
278
+ reviewer: string;
279
+ verdict: string;
280
+ on: unknown;
281
+ digest: string | null;
282
+ seal: unknown;
283
+ }
284
+ /**
285
+ * The quorum of one record, read from its reviews list, or null when the
286
+ * kind has no reviews list or the front matter could not be read (#2671).
287
+ * Malformed entries are skipped; the schema reports them.
288
+ *
289
+ * A verdict is not counted when its reviewer is the decider, holds the agent
290
+ * role, names a digest other than the record's own now, or, under an active
291
+ * attestation policy, carries no seal that verifies for its reviewer (#2687),
292
+ * in that order. Of the rest, the latest verdict per principal counts and
293
+ * each earlier one is a duplicate. Every verdict reports its seal's check in
294
+ * `attested` and `attestation`, whether it counts or not.
295
+ */
296
+ export declare function computeQuorum(kind: RecordKind, entry: Pick<RecordEntry, "data" | "digest"> & {
297
+ id?: string | null;
298
+ }, options: QuorumOptions): Quorum | null;
107
299
  export interface RecordReason {
108
300
  code: RecordReasonCode;
109
301
  message: string;
@@ -119,12 +311,26 @@ export interface RecordEntry {
119
311
  reasons: RecordReason[];
120
312
  /** The id of the closed record whose `supersedes` link replaces this one, or null. */
121
313
  supersededBy: string | null;
122
- /** The front matter as JSON, or null when it could not be parsed. */
314
+ /** The record's structured core as JSON (the front matter, or the whole JSON file), or null when it could not be parsed. */
123
315
  data: Record<string, unknown> | null;
124
- /** Each workspace file the record pins, checked against the tree read (#2549). Empty when nothing was checked. */
316
+ /**
317
+ * Each workspace file the record pins, checked against the tree read
318
+ * (#2549). Empty when nothing was checked. A content-addressed record whose
319
+ * name claims a hash other than its bytes' lists itself, drifted (ws-053).
320
+ */
125
321
  assets: AssetPin[];
126
322
  /** Findings that leave the record valid, such as a pinned file that changed (#2549). */
127
323
  warnings: RecordWarning[];
324
+ /** {@link recordTextDigest} of the file's text, without the kind's reviews list when it has one (#2672). */
325
+ digest: string;
326
+ /** For a session kind only: the subject records' review entries that name this session (#2673). */
327
+ citedBy?: SessionCitation[];
328
+ /** For a work kind (#2683): the record's state is its kind's open state and every need is done. */
329
+ ready?: boolean;
330
+ /** For a work kind: each need that is not done, with its state, or null when no record has the id. */
331
+ blockedBy?: WorkLink[];
332
+ /** For a work kind: each decision the record implements, with its state, or null when no decision has the id. */
333
+ implements?: WorkLink[];
128
334
  }
129
335
  export interface ReadRecordsOptions {
130
336
  /** Where record paths are reported from, and what `source` reads relative to. */
@@ -143,6 +349,21 @@ export interface ReadRecordsOptions {
143
349
  * compared.
144
350
  */
145
351
  history?: RecordHistory;
352
+ /**
353
+ * For a session kind: the records its `session.subjects.kind` locates, read
354
+ * from the same tree (#2673). Without them no verdict is checked and no
355
+ * session is cited.
356
+ */
357
+ subjects?: {
358
+ records: RecordEntry[];
359
+ reviews: string;
360
+ };
361
+ /**
362
+ * The workspace root, from `root` with / separators ("." for `root`
363
+ * itself): where a content-addressed record's own path is reported from
364
+ * when it lists itself in `assets` (ws-053). Defaults to ".".
365
+ */
366
+ workspaceRoot?: string;
146
367
  }
147
368
  /** Commit times, in seconds since the epoch, read from git. */
148
369
  export interface RecordHistory {
@@ -159,7 +380,15 @@ export interface ReadRecordsResult {
159
380
  invalid: number;
160
381
  superseded: number;
161
382
  };
383
+ /** For a work kind (#2683): every decision its decision kind reads, with the work records implementing it. */
384
+ decisions?: DecisionWork[];
162
385
  }
386
+ /**
387
+ * The ids a record's supersedes field names (ws-053). With the kind's `key`,
388
+ * the field is a list of objects and each one's `key` holds an id; without
389
+ * it, the field holds one id or a list of ids. Anything else names none.
390
+ */
391
+ export declare function supersedesTargets(kind: Pick<RecordKind, "supersedes">, data: Record<string, unknown> | null): string[];
163
392
  /** Read every record `loaded` locates, through `options.source`. */
164
393
  export declare function readRecords(loaded: LoadedRecordKind, options: ReadRecordsOptions): Promise<ReadRecordsResult>;
165
394
  //# sourceMappingURL=records.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/workspace/records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/workspace/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAItE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uMAeU,CAAC;AAC3C,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kIAwBS,CAAC;AAC3C,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,6GAeU,CAAC;AAC3C,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,kGASY,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,IAAI,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,2KAiBa,CAAC;AAC3C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,IAAI,EAAE,aAAa;gBAAnB,IAAI,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM;CAKlB;AAMD,gDAAgD;AAChD,eAAO,MAAM,cAAc,4CAA6C,CAAC;AACzE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,oDAAoD;AACpD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwJzB,CAAC;AAEL,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUrF;AAED,kFAAkF;AAClF,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsBzG;AAqBD,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExG;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAgB1D;AAID;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAezD;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAE3E;AA2GD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,IAAgB,EAAE,MAAM,GAAE,YAAsC,GAAG,MAAM,CAIvI;AAoED,+GAA+G;AAC/G,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,8HAA8H;AAC9H,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,gEAAgE;IAChE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,kBAAkB,CAAC;IAChC,0DAA0D;IAC1D,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iDAAiD;IACjD,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,8GAA8G;IAC9G,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,sDAAsD;IACtD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,mFAAmF;IACnF,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK;QAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,GAAG,kBAAkB,CAAC;CAClF;AAED,8CAA8C;AAC9C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;CACf;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAkE3J;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,iGAAiG;IACjG,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,sFAAsF;IACtF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4HAA4H;IAC5H,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,wFAAwF;IACxF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,4GAA4G;IAC5G,MAAM,EAAE,MAAM,CAAC;IACf,mGAAmG;IACnG,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,mGAAmG;IACnG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sGAAsG;IACtG,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,iHAAiH;IACjH,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,+GAA+G;IAC/G,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,8GAA8G;IAC9G,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B;AA0DD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAQtH;AAWD,oEAAoE;AACpE,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyKnH"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * The runtimes a member's components can deploy on, for `chant workspace
3
+ * graph --composites` (#2674): the built-in `local` runtime, and every lexicon
4
+ * the member's `chant.config.ts` configures whose `opRuntime` hosts
5
+ * `chant run --components`. That is the list `chant run --components <name>
6
+ * --on <runtime>` accepts in the member's directory (`../cli/handlers/run.ts`),
7
+ * so a reader such as hud offers these and never guesses a runtime.
8
+ *
9
+ * `local` is the default. A configured default (`run.on`) is read once the
10
+ * config type has one; until then the command without `--on` runs locally.
11
+ *
12
+ * The config is read the way `chant run` reads it, from the member's
13
+ * directory, in the working tree or in the tree `--at` exported. Reading it
14
+ * runs the member's `chant.config.ts` and imports the lexicons it lists.
15
+ */
16
+ /** The runtime core provides, which `chant run` uses without `--on`. */
17
+ export declare const LOCAL_RUNTIME = "local";
18
+ /** Why a member's runtimes list only part of what its config names. Closed: part of the read contract. */
19
+ export declare const RUNTIME_REASON_CODES: readonly ["runtimes-config-unreadable", "runtimes-lexicon-unreadable"];
20
+ export type RuntimeReasonCode = (typeof RUNTIME_REASON_CODES)[number];
21
+ export interface RuntimeReason {
22
+ code: RuntimeReasonCode;
23
+ message: string;
24
+ }
25
+ /** One runtime a component can deploy on. */
26
+ export interface ComponentRuntime {
27
+ /** What `--on` takes: the lexicon's name, or `local`. */
28
+ name: string;
29
+ /** The lexicon that hosts it, or null for `local`. */
30
+ lexicon: string | null;
31
+ /** True for the runtime `chant run --components` uses without `--on`. */
32
+ default: boolean;
33
+ /** The command that deploys the component on it, run in the member's directory. */
34
+ command: string;
35
+ }
36
+ /** What one member's config says about runtimes. */
37
+ export interface MemberRuntimes {
38
+ /** Configured lexicons whose `opRuntime` hosts component runs, in config order. */
39
+ lexicons: string[];
40
+ /** The default runtime's name. */
41
+ default: string;
42
+ reasons: RuntimeReason[];
43
+ }
44
+ /** Loads a lexicon plugin by name; `loadPlugin` from the CLI unless a test swaps it. */
45
+ export type PluginLoader = (name: string) => Promise<{
46
+ opRuntime?: {
47
+ runComponents?: unknown;
48
+ };
49
+ }>;
50
+ /** Read the runtimes a member's config offers. `dir` is the member's directory on disk. */
51
+ export declare function readMemberRuntimes(dir: string, load?: PluginLoader): Promise<MemberRuntimes>;
52
+ /** The runtimes one component can deploy on, `local` first, each with its command line. */
53
+ export declare function componentRuntimes(component: string, member: MemberRuntimes | undefined): ComponentRuntime[];
54
+ /** Read the runtimes of each member of kind chant, from the tree at `root`. */
55
+ export declare function readRuntimesIn(root: string, members: readonly {
56
+ name: string;
57
+ dir: string;
58
+ kind: string;
59
+ }[], load?: PluginLoader): Promise<Map<string, MemberRuntimes>>;
60
+ //# sourceMappingURL=runtimes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimes.d.ts","sourceRoot":"","sources":["../../src/workspace/runtimes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,wEAAwE;AACxE,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,0GAA0G;AAC1G,eAAO,MAAM,oBAAoB,wEAKS,CAAC;AAC3C,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,wFAAwF;AACxF,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAIlG,2FAA2F;AAC3F,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAoBlG;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,gBAAgB,EAAE,CAS3G;AAED,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAO7K"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Gate state for `chant workspace status --json` (#2674): each member's gates
3
+ * as its gate ledger on `chant/lifecycle` records them, so a reader such as
4
+ * hud never runs `git show` on the branch itself.
5
+ *
6
+ * A member's gate ledger is the `_gates/` directory under its ledger prefix:
7
+ * `_members/<member>/_gates/<component>.jsonl` for a member that writes the
8
+ * member layout (#2538), and the flat `_gates/<component>.jsonl` otherwise,
9
+ * chosen the same way as its release ledger. Each file is keyed by the
10
+ * component, or by the op for a gate an Op run reached, and holds both the
11
+ * pending facts a run records and the approvals `chant approve` records
12
+ * (`../lifecycle/gate-ledger.ts`).
13
+ *
14
+ * A gate's state is decided the way a run decides it (`evaluateGate` in
15
+ * `../op/gate.ts`), without writing anything: the newest pending fact for the
16
+ * gate in its environment is the anchor, only approvals recorded since it and
17
+ * for its plan count, and a gate with an `approval` block counts them with
18
+ * `tallyGateApprovals`, as `describeApprovalProgress` does after an approve.
19
+ */
20
+ /** Why a member's gates can't be listed. Closed: a new code is a contract change. */
21
+ export declare const GATE_REASON_CODES: readonly ["gates-no-ledger", "gates-no-gate-ledger", "gates-ledger-unreadable"];
22
+ export type GateReasonCode = (typeof GATE_REASON_CODES)[number];
23
+ export type GateState = "pending" | "approved" | "expired" | "superseded";
24
+ export interface StatusGateApproval {
25
+ /** Who recorded it: `chant approve --approver`, or the CI or shell identity. */
26
+ principal: string;
27
+ /** The channel it was recorded on (`cli`, `mcp`, `acp`), or null for a record older than chant#2384. */
28
+ channel: string | null;
29
+ at: string;
30
+ }
31
+ export interface StatusGate {
32
+ /** The ledger file's key: the component, or the op for a gate an Op run reached. */
33
+ component: string;
34
+ /** The gate's name. */
35
+ name: string;
36
+ /** The environment the gate was reached in, or null for a gate that records none (an Op gate). */
37
+ env: string | null;
38
+ /** The plan the run reached the gate with, or null for a gate that binds no plan. */
39
+ planDigest: string | null;
40
+ state: GateState;
41
+ /** When the run recorded the pending fact the state is read against. */
42
+ recordedAt: string;
43
+ expiresAt: string;
44
+ /** The approvals that count toward the gate for this plan, oldest first. */
45
+ approvals: StatusGateApproval[];
46
+ /** How many human approvals the gate needs: its quorum's count, 1 without one. */
47
+ needed: number;
48
+ /** The command that approves it, run in the member's directory. */
49
+ approve: string;
50
+ }
51
+ export interface StatusGateLedger {
52
+ /** `members` for `_members/<member>/_gates`, `flat` for `_gates`. */
53
+ layout: "members" | "flat";
54
+ /** The gate ledger directory on the branch. */
55
+ path: string;
56
+ /** True when more than one member in this output reads the same flat directory. */
57
+ shared: boolean;
58
+ /** Lines that are neither a pending fact nor an approval, skipped. */
59
+ malformed: number;
60
+ reason: {
61
+ code: GateReasonCode;
62
+ message: string;
63
+ } | null;
64
+ }
65
+ /**
66
+ * Reads the gate ledger files in `dir` on the branch at `commit`: file name
67
+ * without `.jsonl` to contents. Null when the directory doesn't exist; throws
68
+ * when it can't be read.
69
+ */
70
+ export type GateLedgerReader = (dir: string, commit: string, cwd: string) => Promise<Map<string, string> | null>;
71
+ export declare const defaultGateLedgerReader: GateLedgerReader;
72
+ /** The exact `chant approve` line for a gate. */
73
+ export declare function approveCommand(component: string, gate: string, env: string | null): string;
74
+ /**
75
+ * Every gate in one ledger file, one per gate and environment, for the
76
+ * environments in `envs`. A gate whose facts record no environment (an Op
77
+ * gate) is listed whatever `envs` is. A pending fact with no environment on a
78
+ * gate whose other facts have one is left out, as a run leaves it out: such a
79
+ * line binds no environment, and `chant approve --expire` writes one.
80
+ */
81
+ export declare function gatesInLedger(component: string, content: string, envs: readonly string[], now: string): {
82
+ gates: StatusGate[];
83
+ malformed: number;
84
+ };
85
+ /** Read one member's gate ledger directory at `commit` and list its gates. */
86
+ export declare function readMemberGates(dir: string, layout: "members" | "flat", commit: string | null, envs: readonly string[], cwd: string, now: string, read?: GateLedgerReader): Promise<{
87
+ gates: StatusGate[];
88
+ ledger: StatusGateLedger;
89
+ }>;
90
+ //# sourceMappingURL=status-gates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-gates.d.ts","sourceRoot":"","sources":["../../src/workspace/status-gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,iFAOY,CAAC;AAC3C,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,qFAAqF;IACrF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,OAAO,CAAC;IAChB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAMjH,eAAO,MAAM,uBAAuB,EAAE,gBAYrC,CAAC;AAEF,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE1F;AAgDD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAkBlJ;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,GAAG,MAAM,EAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,gBAA0C,GAC/C,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAsB5D"}
@@ -20,10 +20,16 @@
20
20
  * declaration that can't be read, or an environment name that can't be one,
21
21
  * exits 1. The `--json` output is part of the read contract and is described
22
22
  * by `status.schema.json` beside this file.
23
+ *
24
+ * The JSON also lists each member's gates, read from its gate ledger on the
25
+ * same branch (#2674, `status-gates.ts`): the state of each, the approvals
26
+ * that count, and the `chant approve` line that answers it. The text view
27
+ * doesn't show them.
23
28
  */
24
29
  import type { CommandContext } from "../cli/registry.js";
25
30
  import { type ReleaseRecord } from "../lifecycle/release-ledger.js";
26
31
  import { type ErrorLocation } from "./declaration.js";
32
+ import { type GateLedgerReader, type StatusGate, type StatusGateLedger } from "./status-gates.js";
27
33
  /** The version of the `status` output this chant writes. */
28
34
  export declare const STATUS_CONTRACT_VERSION = 1;
29
35
  /** `$id` of the JSON Schema for the `--json` output, shipped beside this file. */
@@ -38,6 +44,8 @@ export declare const MEMBERS_DIR = "_members";
38
44
  */
39
45
  export declare const STATUS_REASON_CODES: readonly ["ledger-unreadable", "ledger-malformed"];
40
46
  export type StatusReasonCode = (typeof STATUS_REASON_CODES)[number];
47
+ /** Why a member's gates can't be listed (#2674). Closed, like {@link STATUS_REASON_CODES}. */
48
+ export declare const STATUS_GATE_REASON_CODES: readonly ["gates-no-ledger", "gates-no-gate-ledger", "gates-ledger-unreadable"];
41
49
  /**
42
50
  * Why the status couldn't be read at all. The declaration's own codes, except
43
51
  * the two that only `--at` returns, and one for the environment name.
@@ -93,7 +101,12 @@ export interface StatusMember {
93
101
  environments: StatusEnvironment[];
94
102
  /** Null without `--compare-to`. */
95
103
  compare: StatusCompare | null;
104
+ /** True when no environment's release ledger has a reason. Gate reasons don't change it. */
96
105
  readable: boolean;
106
+ /** Where the member's gates were read from, and why none are listed when none can be (#2674). */
107
+ gateLedger: StatusGateLedger;
108
+ /** Each gate in the member's gate ledger, one per environment asked for, sorted by component then gate. */
109
+ gates: StatusGate[];
97
110
  }
98
111
  export type StatusDocument = {
99
112
  $schema: string;
@@ -138,6 +151,10 @@ export interface StatusQuery {
138
151
  compareTo?: string;
139
152
  /** Reads one ledger; the lifecycle reader unless a test swaps it. */
140
153
  readLedger?: LedgerReader;
154
+ /** Reads one member's gate ledger directory; git unless a test swaps it. */
155
+ readGates?: GateLedgerReader;
156
+ /** The instant a gate's expiry is measured against; now by default. */
157
+ now?: string;
141
158
  }
142
159
  export declare function compareEnvironments(a: StatusEnvironment, b: StatusEnvironment): StatusCompare;
143
160
  /** Find the workspace, read every member's ledger and build the document `--json` prints. */
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/workspace/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/workspace/status.ts"],"names":[],"mappings":"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"}