@cat-factory/contracts 0.171.0 → 0.173.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.
- package/dist/execution.d.ts +45 -0
- package/dist/execution.d.ts.map +1 -1
- package/dist/pr-report.d.ts +117 -1
- package/dist/pr-report.d.ts.map +1 -1
- package/dist/pr-report.js +65 -1
- package/dist/pr-report.js.map +1 -1
- package/dist/routes/agent-runs.d.ts +30 -0
- package/dist/routes/agent-runs.d.ts.map +1 -1
- package/dist/routes/execution.d.ts +120 -0
- package/dist/routes/execution.d.ts.map +1 -1
- package/dist/routes/human-review.d.ts +15 -0
- package/dist/routes/human-review.d.ts.map +1 -1
- package/dist/routes/human-test.d.ts +75 -0
- package/dist/routes/human-test.d.ts.map +1 -1
- package/dist/routes/spec.d.ts +1 -0
- package/dist/routes/spec.d.ts.map +1 -1
- package/dist/routes/tasks.d.ts +161 -0
- package/dist/routes/tasks.d.ts.map +1 -1
- package/dist/routes/tasks.js +32 -1
- package/dist/routes/tasks.js.map +1 -1
- package/dist/routes/visual-confirm.d.ts +45 -0
- package/dist/routes/visual-confirm.d.ts.map +1 -1
- package/dist/routes/workspaces.d.ts +30 -0
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/snapshot.d.ts +15 -0
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/spec.d.ts +62 -0
- package/dist/spec.d.ts.map +1 -1
- package/dist/spec.js +36 -0
- package/dist/spec.js.map +1 -1
- package/dist/tasks.d.ts +73 -0
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +56 -0
- package/dist/tasks.js.map +1 -1
- package/dist/testing.d.ts +54 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +36 -0
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
package/dist/spec.d.ts
CHANGED
|
@@ -5,6 +5,33 @@ export type RequirementPriority = v.InferOutput<typeof requirementPrioritySchema
|
|
|
5
5
|
/** Whether a requirement is a behaviour, a quality attribute, or a hard constraint. */
|
|
6
6
|
export declare const requirementKindSchema: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
|
|
7
7
|
export type RequirementKind = v.InferOutput<typeof requirementKindSchema>;
|
|
8
|
+
/**
|
|
9
|
+
* IMPLEMENTATION STATE — whether the service is already known to honour a requirement, as
|
|
10
|
+
* distinct from whether it has been agreed. This is the axis a prescriptive spec is missing
|
|
11
|
+
* by construction: `spec/` says what must be TRUE, and until this field existed it could not
|
|
12
|
+
* say what is true YET.
|
|
13
|
+
*
|
|
14
|
+
* - `aspirational` — agreed (a human accepted it through the spec diff's PR review) but NOT
|
|
15
|
+
* yet observed to hold. The default for a newly written requirement.
|
|
16
|
+
* - `established` — observed to hold: a tester actually exercised its acceptance criteria
|
|
17
|
+
* and they passed. This is the only thing that makes a requirement STANDING behaviour.
|
|
18
|
+
*
|
|
19
|
+
* Why it matters: without it, an agreed-but-unbuilt requirement enters every build prompt as
|
|
20
|
+
* standing behaviour (so an agent implements it by accident, on an unrelated task) and draws a
|
|
21
|
+
* spurious `not_met` from the tester on every subsequent run until it ships. The field is what
|
|
22
|
+
* makes a behaviour contract safe to write down BEFORE it is honoured.
|
|
23
|
+
*
|
|
24
|
+
* Deliberately a FIELD, not a `spec/` sub-folder: a folder encodes the state in the path, so
|
|
25
|
+
* every promotion becomes a file move and the state cannot be read without walking the tree.
|
|
26
|
+
* The markdown / Gherkin renders group by the field and read identically.
|
|
27
|
+
*
|
|
28
|
+
* PROMOTION is mechanical, never a human action — see the tester-driven promotion post-op in
|
|
29
|
+
* `@cat-factory/agents` (`repo-ops/builtin.ts`). A first observed pass flips `aspirational` →
|
|
30
|
+
* `established`, which self-maintains across every path, including a later task that
|
|
31
|
+
* deliberately changes the behaviour.
|
|
32
|
+
*/
|
|
33
|
+
export declare const requirementStateSchema: v.PicklistSchema<["aspirational", "established"], undefined>;
|
|
34
|
+
export type RequirementState = v.InferOutput<typeof requirementStateSchema>;
|
|
8
35
|
/**
|
|
9
36
|
* A single acceptance criterion in structured Given/When/Then form — the seed for
|
|
10
37
|
* one Gherkin `Scenario`. Kept structured (not prose) so the harness can render it
|
|
@@ -27,6 +54,13 @@ export declare const requirementItemSchema: v.ObjectSchema<{
|
|
|
27
54
|
readonly statement: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
28
55
|
readonly kind: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
|
|
29
56
|
readonly priority: v.PicklistSchema<["must", "should", "could"], undefined>;
|
|
57
|
+
/**
|
|
58
|
+
* Whether the service is already known to honour this requirement. Defaults to
|
|
59
|
+
* `aspirational` — a requirement nobody has observed to hold is not standing behaviour, and
|
|
60
|
+
* a spec written before the code is the normal case rather than the exceptional one. See
|
|
61
|
+
* {@link requirementStateSchema}.
|
|
62
|
+
*/
|
|
63
|
+
readonly state: v.OptionalSchema<v.PicklistSchema<["aspirational", "established"], undefined>, "aspirational">;
|
|
30
64
|
/** Ids of the board task/block(s) this requirement was aggregated from (provenance). */
|
|
31
65
|
readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
|
|
32
66
|
/** Structured acceptance criteria → the seed for this requirement's Gherkin scenarios. */
|
|
@@ -70,6 +104,13 @@ export declare const requirementGroupSchema: v.ObjectSchema<{
|
|
|
70
104
|
readonly statement: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
71
105
|
readonly kind: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
|
|
72
106
|
readonly priority: v.PicklistSchema<["must", "should", "could"], undefined>;
|
|
107
|
+
/**
|
|
108
|
+
* Whether the service is already known to honour this requirement. Defaults to
|
|
109
|
+
* `aspirational` — a requirement nobody has observed to hold is not standing behaviour, and
|
|
110
|
+
* a spec written before the code is the normal case rather than the exceptional one. See
|
|
111
|
+
* {@link requirementStateSchema}.
|
|
112
|
+
*/
|
|
113
|
+
readonly state: v.OptionalSchema<v.PicklistSchema<["aspirational", "established"], undefined>, "aspirational">;
|
|
73
114
|
/** Ids of the board task/block(s) this requirement was aggregated from (provenance). */
|
|
74
115
|
readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
|
|
75
116
|
/** Structured acceptance criteria → the seed for this requirement's Gherkin scenarios. */
|
|
@@ -107,6 +148,13 @@ export declare const specModuleSchema: v.ObjectSchema<{
|
|
|
107
148
|
readonly statement: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
108
149
|
readonly kind: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
|
|
109
150
|
readonly priority: v.PicklistSchema<["must", "should", "could"], undefined>;
|
|
151
|
+
/**
|
|
152
|
+
* Whether the service is already known to honour this requirement. Defaults to
|
|
153
|
+
* `aspirational` — a requirement nobody has observed to hold is not standing behaviour, and
|
|
154
|
+
* a spec written before the code is the normal case rather than the exceptional one. See
|
|
155
|
+
* {@link requirementStateSchema}.
|
|
156
|
+
*/
|
|
157
|
+
readonly state: v.OptionalSchema<v.PicklistSchema<["aspirational", "established"], undefined>, "aspirational">;
|
|
110
158
|
/** Ids of the board task/block(s) this requirement was aggregated from (provenance). */
|
|
111
159
|
readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
|
|
112
160
|
/** Structured acceptance criteria → the seed for this requirement's Gherkin scenarios. */
|
|
@@ -151,6 +199,13 @@ export declare const specDocSchema: v.ObjectSchema<{
|
|
|
151
199
|
readonly statement: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
152
200
|
readonly kind: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
|
|
153
201
|
readonly priority: v.PicklistSchema<["must", "should", "could"], undefined>;
|
|
202
|
+
/**
|
|
203
|
+
* Whether the service is already known to honour this requirement. Defaults to
|
|
204
|
+
* `aspirational` — a requirement nobody has observed to hold is not standing behaviour, and
|
|
205
|
+
* a spec written before the code is the normal case rather than the exceptional one. See
|
|
206
|
+
* {@link requirementStateSchema}.
|
|
207
|
+
*/
|
|
208
|
+
readonly state: v.OptionalSchema<v.PicklistSchema<["aspirational", "established"], undefined>, "aspirational">;
|
|
154
209
|
/** Ids of the board task/block(s) this requirement was aggregated from (provenance). */
|
|
155
210
|
readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
|
|
156
211
|
/** Structured acceptance criteria → the seed for this requirement's Gherkin scenarios. */
|
|
@@ -227,6 +282,13 @@ export declare const serviceSpecViewSchema: v.ObjectSchema<{
|
|
|
227
282
|
readonly statement: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 4000, undefined>]>;
|
|
228
283
|
readonly kind: v.PicklistSchema<["functional", "nonfunctional", "constraint"], undefined>;
|
|
229
284
|
readonly priority: v.PicklistSchema<["must", "should", "could"], undefined>;
|
|
285
|
+
/**
|
|
286
|
+
* Whether the service is already known to honour this requirement. Defaults to
|
|
287
|
+
* `aspirational` — a requirement nobody has observed to hold is not standing behaviour, and
|
|
288
|
+
* a spec written before the code is the normal case rather than the exceptional one. See
|
|
289
|
+
* {@link requirementStateSchema}.
|
|
290
|
+
*/
|
|
291
|
+
readonly state: v.OptionalSchema<v.PicklistSchema<["aspirational", "established"], undefined>, "aspirational">;
|
|
230
292
|
/** Ids of the board task/block(s) this requirement was aggregated from (provenance). */
|
|
231
293
|
readonly sourceBlockIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, readonly []>;
|
|
232
294
|
/** Structured acceptance criteria → the seed for this requirement's Gherkin scenarios. */
|
package/dist/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAmC5B,wDAAwD;AACxD,eAAO,MAAM,yBAAyB,0DAA0C,CAAA;AAChF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,uFAAuF;AACvF,eAAO,MAAM,qBAAqB,4EAA4D,CAAA;AAC9F,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;;aAOpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,2FAA2F;AAC3F,eAAO,MAAM,qBAAqB;IAChC,gDAAgD;;IAEhD,sBAAsB;;IAEtB,6DAA6D;;;;IAI7D,wFAAwF;;IAExF,0FAA0F;;;;;;;aAE1F,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;IAE3B,sEAAsE;;IAEtE,sCAAsC;;;aAGtC,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/spec.js
CHANGED
|
@@ -34,6 +34,32 @@ const blockIdField = v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(20
|
|
|
34
34
|
export const requirementPrioritySchema = v.picklist(['must', 'should', 'could']);
|
|
35
35
|
/** Whether a requirement is a behaviour, a quality attribute, or a hard constraint. */
|
|
36
36
|
export const requirementKindSchema = v.picklist(['functional', 'nonfunctional', 'constraint']);
|
|
37
|
+
/**
|
|
38
|
+
* IMPLEMENTATION STATE — whether the service is already known to honour a requirement, as
|
|
39
|
+
* distinct from whether it has been agreed. This is the axis a prescriptive spec is missing
|
|
40
|
+
* by construction: `spec/` says what must be TRUE, and until this field existed it could not
|
|
41
|
+
* say what is true YET.
|
|
42
|
+
*
|
|
43
|
+
* - `aspirational` — agreed (a human accepted it through the spec diff's PR review) but NOT
|
|
44
|
+
* yet observed to hold. The default for a newly written requirement.
|
|
45
|
+
* - `established` — observed to hold: a tester actually exercised its acceptance criteria
|
|
46
|
+
* and they passed. This is the only thing that makes a requirement STANDING behaviour.
|
|
47
|
+
*
|
|
48
|
+
* Why it matters: without it, an agreed-but-unbuilt requirement enters every build prompt as
|
|
49
|
+
* standing behaviour (so an agent implements it by accident, on an unrelated task) and draws a
|
|
50
|
+
* spurious `not_met` from the tester on every subsequent run until it ships. The field is what
|
|
51
|
+
* makes a behaviour contract safe to write down BEFORE it is honoured.
|
|
52
|
+
*
|
|
53
|
+
* Deliberately a FIELD, not a `spec/` sub-folder: a folder encodes the state in the path, so
|
|
54
|
+
* every promotion becomes a file move and the state cannot be read without walking the tree.
|
|
55
|
+
* The markdown / Gherkin renders group by the field and read identically.
|
|
56
|
+
*
|
|
57
|
+
* PROMOTION is mechanical, never a human action — see the tester-driven promotion post-op in
|
|
58
|
+
* `@cat-factory/agents` (`repo-ops/builtin.ts`). A first observed pass flips `aspirational` →
|
|
59
|
+
* `established`, which self-maintains across every path, including a later task that
|
|
60
|
+
* deliberately changes the behaviour.
|
|
61
|
+
*/
|
|
62
|
+
export const requirementStateSchema = v.picklist(['aspirational', 'established']);
|
|
37
63
|
/**
|
|
38
64
|
* A single acceptance criterion in structured Given/When/Then form — the seed for
|
|
39
65
|
* one Gherkin `Scenario`. Kept structured (not prose) so the harness can render it
|
|
@@ -57,6 +83,13 @@ export const requirementItemSchema = v.object({
|
|
|
57
83
|
statement: reqStatementField,
|
|
58
84
|
kind: requirementKindSchema,
|
|
59
85
|
priority: requirementPrioritySchema,
|
|
86
|
+
/**
|
|
87
|
+
* Whether the service is already known to honour this requirement. Defaults to
|
|
88
|
+
* `aspirational` — a requirement nobody has observed to hold is not standing behaviour, and
|
|
89
|
+
* a spec written before the code is the normal case rather than the exceptional one. See
|
|
90
|
+
* {@link requirementStateSchema}.
|
|
91
|
+
*/
|
|
92
|
+
state: v.optional(requirementStateSchema, 'aspirational'),
|
|
60
93
|
/** Ids of the board task/block(s) this requirement was aggregated from (provenance). */
|
|
61
94
|
sourceBlockIds: v.optional(v.array(blockIdField), []),
|
|
62
95
|
/** Structured acceptance criteria → the seed for this requirement's Gherkin scenarios. */
|
|
@@ -229,6 +262,9 @@ export function renderSpecForReview(spec) {
|
|
|
229
262
|
for (const req of group.requirements ?? []) {
|
|
230
263
|
lines.push('', `#### ${req.title} (${req.id})`, '', `- Kind: ${req.kind}`);
|
|
231
264
|
lines.push(`- Priority: ${req.priority}`);
|
|
265
|
+
// The implementation state is the difference between "the service does this" and "we
|
|
266
|
+
// agreed the service should do this", so a human reviewing the spec diff has to see it.
|
|
267
|
+
lines.push(`- State: ${req.state ?? 'aspirational'}`);
|
|
232
268
|
lines.push(`- Statement: ${req.statement}`);
|
|
233
269
|
for (const ac of req.acceptance ?? []) {
|
|
234
270
|
lines.push(` - Acceptance ${ac.id}: GIVEN ${ac.given} WHEN ${ac.when} THEN ${ac.outcome}`);
|
package/dist/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/tasks.d.ts
CHANGED
|
@@ -2,6 +2,79 @@ import * as v from 'valibot';
|
|
|
2
2
|
/** The external task trackers cat-factory can link to. */
|
|
3
3
|
export declare const taskSourceKindSchema: v.PicklistSchema<["jira", "github", "linear"], undefined>;
|
|
4
4
|
export type TaskSourceKind = v.InferOutput<typeof taskSourceKindSchema>;
|
|
5
|
+
/** The webhook state of one task-source connection, safe to read back at any time. */
|
|
6
|
+
export declare const taskSourceWebhookSchema: v.ObjectSchema<{
|
|
7
|
+
readonly source: v.PicklistSchema<["jira", "github", "linear"], undefined>;
|
|
8
|
+
/**
|
|
9
|
+
* Whether this source can receive webhooks at all on this deployment (its provider ships a
|
|
10
|
+
* webhook adapter). `false` ⇒ the delivery path 404s and minting is refused.
|
|
11
|
+
*/
|
|
12
|
+
readonly supported: v.BooleanSchema<undefined>;
|
|
13
|
+
/** Whether a secret is currently stored — i.e. whether deliveries will be accepted. */
|
|
14
|
+
readonly configured: v.BooleanSchema<undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* The path to paste into the tracker, relative to the deployment's public base URL. Returned
|
|
17
|
+
* even when unconfigured so an operator can see where deliveries will go before minting.
|
|
18
|
+
*/
|
|
19
|
+
readonly deliveryPath: v.StringSchema<undefined>;
|
|
20
|
+
/**
|
|
21
|
+
* Comma-separated author handles / emails / vendor ids allowed to drive a parked review from a
|
|
22
|
+
* ticket comment. Empty ⇒ any NON-BOT author, which is the right default for a private tracker
|
|
23
|
+
* and the wrong one for a public repo.
|
|
24
|
+
*/
|
|
25
|
+
readonly replyAllow: v.StringSchema<undefined>;
|
|
26
|
+
}, undefined>;
|
|
27
|
+
export type TaskSourceWebhook = v.InferOutput<typeof taskSourceWebhookSchema>;
|
|
28
|
+
/**
|
|
29
|
+
* The freshly-minted secret, returned EXACTLY ONCE. It is sealed into the connection's credential
|
|
30
|
+
* bag immediately and never read back — the same one-shot contract as an API key, for the same
|
|
31
|
+
* reason: a secret a surface will hand out again is a secret an operator never has to rotate.
|
|
32
|
+
*/
|
|
33
|
+
export declare const taskSourceWebhookSecretSchema: v.ObjectSchema<{
|
|
34
|
+
readonly source: v.PicklistSchema<["jira", "github", "linear"], undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this source can receive webhooks at all on this deployment (its provider ships a
|
|
37
|
+
* webhook adapter). `false` ⇒ the delivery path 404s and minting is refused.
|
|
38
|
+
*/
|
|
39
|
+
readonly supported: v.BooleanSchema<undefined>;
|
|
40
|
+
/** Whether a secret is currently stored — i.e. whether deliveries will be accepted. */
|
|
41
|
+
readonly configured: v.BooleanSchema<undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* The path to paste into the tracker, relative to the deployment's public base URL. Returned
|
|
44
|
+
* even when unconfigured so an operator can see where deliveries will go before minting.
|
|
45
|
+
*/
|
|
46
|
+
readonly deliveryPath: v.StringSchema<undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* Comma-separated author handles / emails / vendor ids allowed to drive a parked review from a
|
|
49
|
+
* ticket comment. Empty ⇒ any NON-BOT author, which is the right default for a private tracker
|
|
50
|
+
* and the wrong one for a public repo.
|
|
51
|
+
*/
|
|
52
|
+
readonly replyAllow: v.StringSchema<undefined>;
|
|
53
|
+
readonly secret: v.StringSchema<undefined>;
|
|
54
|
+
}, undefined>;
|
|
55
|
+
export type TaskSourceWebhookSecret = v.InferOutput<typeof taskSourceWebhookSecretSchema>;
|
|
56
|
+
/**
|
|
57
|
+
* Mint (or rotate) the connection's webhook secret, optionally seeding the reply allow-list in the
|
|
58
|
+
* same call so first-time setup is one round trip. Editing the allow-list LATER goes through
|
|
59
|
+
* {@link updateTaskSourceWebhookSchema} instead — rotation is destructive (the tracker's configured
|
|
60
|
+
* secret stops verifying immediately), so it must never be a side effect of an unrelated edit.
|
|
61
|
+
*/
|
|
62
|
+
export declare const configureTaskSourceWebhookSchema: v.ObjectSchema<{
|
|
63
|
+
readonly replyAllow: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
64
|
+
}, undefined>;
|
|
65
|
+
export type ConfigureTaskSourceWebhookInput = v.InferOutput<typeof configureTaskSourceWebhookSchema>;
|
|
66
|
+
/**
|
|
67
|
+
* Edit the reply allow-list, leaving the secret alone.
|
|
68
|
+
*
|
|
69
|
+
* Its own route because tightening the allow-list is exactly what an operator does when a tracker
|
|
70
|
+
* turns out to be more public than they thought — and folding it into the mint would answer that
|
|
71
|
+
* with a rotated secret and a dead webhook until they re-paste it. `replyAllow` is required here:
|
|
72
|
+
* a PATCH with nothing to set is a caller mistake, not a no-op.
|
|
73
|
+
*/
|
|
74
|
+
export declare const updateTaskSourceWebhookSchema: v.ObjectSchema<{
|
|
75
|
+
readonly replyAllow: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
76
|
+
}, undefined>;
|
|
77
|
+
export type UpdateTaskSourceWebhookInput = v.InferOutput<typeof updateTaskSourceWebhookSchema>;
|
|
5
78
|
/**
|
|
6
79
|
* Everything the frontend needs to render a source's connect form and import
|
|
7
80
|
* box without hard-coding any provider specifics.
|
package/dist/tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAkB5B,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,2DAA2C,CAAA;AAC5E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/tasks.js
CHANGED
|
@@ -16,6 +16,62 @@ import { credentialFieldSchema } from './documents.js';
|
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
17
17
|
/** The external task trackers cat-factory can link to. */
|
|
18
18
|
export const taskSourceKindSchema = v.picklist(['jira', 'github', 'linear']);
|
|
19
|
+
// ---- Inbound tracker webhooks (push-driven intake + ticket replies) --------
|
|
20
|
+
// The per-connection delivery endpoint an operator pastes into the tracker's webhook form, plus
|
|
21
|
+
// the secret that authenticates it. The secret rides the connection's sealed credential bag (no
|
|
22
|
+
// new table), so this surface is purely mint/read/clear. See
|
|
23
|
+
// `docs/initiatives/tracker-webhook-intake.md`.
|
|
24
|
+
/** The webhook state of one task-source connection, safe to read back at any time. */
|
|
25
|
+
export const taskSourceWebhookSchema = v.object({
|
|
26
|
+
source: taskSourceKindSchema,
|
|
27
|
+
/**
|
|
28
|
+
* Whether this source can receive webhooks at all on this deployment (its provider ships a
|
|
29
|
+
* webhook adapter). `false` ⇒ the delivery path 404s and minting is refused.
|
|
30
|
+
*/
|
|
31
|
+
supported: v.boolean(),
|
|
32
|
+
/** Whether a secret is currently stored — i.e. whether deliveries will be accepted. */
|
|
33
|
+
configured: v.boolean(),
|
|
34
|
+
/**
|
|
35
|
+
* The path to paste into the tracker, relative to the deployment's public base URL. Returned
|
|
36
|
+
* even when unconfigured so an operator can see where deliveries will go before minting.
|
|
37
|
+
*/
|
|
38
|
+
deliveryPath: v.string(),
|
|
39
|
+
/**
|
|
40
|
+
* Comma-separated author handles / emails / vendor ids allowed to drive a parked review from a
|
|
41
|
+
* ticket comment. Empty ⇒ any NON-BOT author, which is the right default for a private tracker
|
|
42
|
+
* and the wrong one for a public repo.
|
|
43
|
+
*/
|
|
44
|
+
replyAllow: v.string(),
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* The freshly-minted secret, returned EXACTLY ONCE. It is sealed into the connection's credential
|
|
48
|
+
* bag immediately and never read back — the same one-shot contract as an API key, for the same
|
|
49
|
+
* reason: a secret a surface will hand out again is a secret an operator never has to rotate.
|
|
50
|
+
*/
|
|
51
|
+
export const taskSourceWebhookSecretSchema = v.object({
|
|
52
|
+
...taskSourceWebhookSchema.entries,
|
|
53
|
+
secret: v.string(),
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Mint (or rotate) the connection's webhook secret, optionally seeding the reply allow-list in the
|
|
57
|
+
* same call so first-time setup is one round trip. Editing the allow-list LATER goes through
|
|
58
|
+
* {@link updateTaskSourceWebhookSchema} instead — rotation is destructive (the tracker's configured
|
|
59
|
+
* secret stops verifying immediately), so it must never be a side effect of an unrelated edit.
|
|
60
|
+
*/
|
|
61
|
+
export const configureTaskSourceWebhookSchema = v.object({
|
|
62
|
+
replyAllow: v.optional(v.pipe(v.string(), v.maxLength(2_000))),
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Edit the reply allow-list, leaving the secret alone.
|
|
66
|
+
*
|
|
67
|
+
* Its own route because tightening the allow-list is exactly what an operator does when a tracker
|
|
68
|
+
* turns out to be more public than they thought — and folding it into the mint would answer that
|
|
69
|
+
* with a rotated secret and a dead webhook until they re-paste it. `replyAllow` is required here:
|
|
70
|
+
* a PATCH with nothing to set is a caller mistake, not a no-op.
|
|
71
|
+
*/
|
|
72
|
+
export const updateTaskSourceWebhookSchema = v.object({
|
|
73
|
+
replyAllow: v.pipe(v.string(), v.maxLength(2_000)),
|
|
74
|
+
});
|
|
19
75
|
// ---- Provider self-description (drives the generic connect UI) ------------
|
|
20
76
|
// `credentialFieldSchema` is shared with the document-source contracts: a
|
|
21
77
|
// credential form field is identical regardless of what it connects to.
|
package/dist/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.d.ts
CHANGED
|
@@ -59,6 +59,38 @@ export declare const testScreenshotSchema: v.ObjectSchema<{
|
|
|
59
59
|
readonly referenceArtifactId: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
60
60
|
}, undefined>;
|
|
61
61
|
export type TestScreenshot = v.InferOutput<typeof testScreenshotSchema>;
|
|
62
|
+
/**
|
|
63
|
+
* How a spec requirement fared when the Tester went looking for it. THREE-VALUED on purpose:
|
|
64
|
+
* "we didn't check" and "it's broken" must never render the same, which is the entire point of
|
|
65
|
+
* keeping the list — a reviewer reading a two-valued list cannot tell a requirement that was
|
|
66
|
+
* verified from one nobody looked at.
|
|
67
|
+
*
|
|
68
|
+
* - `met` — its acceptance criteria were exercised and observed to hold.
|
|
69
|
+
* - `not_met` — exercised and observed NOT to hold.
|
|
70
|
+
* - `not_covered` — not exercised this run (out of the change's blast radius, unreachable in
|
|
71
|
+
* this setup, or simply not yet built — an `aspirational` requirement is
|
|
72
|
+
* EXPECTED to land here and must never be reported as `not_met`).
|
|
73
|
+
*/
|
|
74
|
+
export declare const requirementVerdictStatusSchema: v.PicklistSchema<["met", "not_met", "not_covered"], undefined>;
|
|
75
|
+
export type RequirementVerdictStatus = v.InferOutput<typeof requirementVerdictStatusSchema>;
|
|
76
|
+
/**
|
|
77
|
+
* One requirement-level verdict, keyed by the **spec requirement id** (`spec/modules/<m>/<g>.json`
|
|
78
|
+
* → `requirements[].id`, surfaced to the Tester as the `# requirement: <id>` comment above each
|
|
79
|
+
* Gherkin scenario). Deliberately the SAME id space as the spec — a second id space would make
|
|
80
|
+
* the join to `spec/` guesswork, which is what sank the withdrawn per-service store.
|
|
81
|
+
*
|
|
82
|
+
* Two consumers read this, and they must agree: the promotion post-op flips a `met` requirement
|
|
83
|
+
* from `aspirational` to `established` in the in-repo spec, and the PR verification report joins
|
|
84
|
+
* it back to the spec to render criterion → evidence.
|
|
85
|
+
*/
|
|
86
|
+
export declare const requirementVerdictSchema: v.ObjectSchema<{
|
|
87
|
+
/** The spec requirement's stable id (e.g. `req-login-rate-limit`). */
|
|
88
|
+
readonly requirementId: v.StringSchema<undefined>;
|
|
89
|
+
readonly status: v.PicklistSchema<["met", "not_met", "not_covered"], undefined>;
|
|
90
|
+
/** What was actually observed — the evidence behind the verdict. */
|
|
91
|
+
readonly detail: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
92
|
+
}, undefined>;
|
|
93
|
+
export type RequirementVerdict = v.InferOutput<typeof requirementVerdictSchema>;
|
|
62
94
|
/**
|
|
63
95
|
* Enforce the `abort ⇒ greenlight === false` invariant at the schema boundary so it can't
|
|
64
96
|
* depend on every caller getting the ordering right: a report that signals `abort` is never
|
|
@@ -95,6 +127,18 @@ export declare const testReportSchema: v.SchemaWithPipe<readonly [v.ObjectSchema
|
|
|
95
127
|
/** Severity, so the fixer (and a human) can triage. */
|
|
96
128
|
readonly severity: v.PicklistSchema<["low", "medium", "high", "critical"], undefined>;
|
|
97
129
|
}, undefined>, undefined>;
|
|
130
|
+
/**
|
|
131
|
+
* Per-spec-requirement verdicts, keyed by the requirement id the Gherkin scenarios carry.
|
|
132
|
+
* Optional: absent on a run whose service has no `spec/`, and on every report produced before
|
|
133
|
+
* this contract existed — both read as "no requirement was ruled on", never as a failure.
|
|
134
|
+
*/
|
|
135
|
+
readonly requirementVerdicts: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
136
|
+
/** The spec requirement's stable id (e.g. `req-login-rate-limit`). */
|
|
137
|
+
readonly requirementId: v.StringSchema<undefined>;
|
|
138
|
+
readonly status: v.PicklistSchema<["met", "not_met", "not_covered"], undefined>;
|
|
139
|
+
/** What was actually observed — the evidence behind the verdict. */
|
|
140
|
+
readonly detail: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
141
|
+
}, undefined>, undefined>, undefined>;
|
|
98
142
|
/** Which environment the suite ran in, echoed back for the UI. */
|
|
99
143
|
readonly environment: v.OptionalSchema<v.PicklistSchema<["local", "ephemeral"], undefined>, undefined>;
|
|
100
144
|
/**
|
|
@@ -140,6 +184,11 @@ export declare const testReportSchema: v.SchemaWithPipe<readonly [v.ObjectSchema
|
|
|
140
184
|
detail: string;
|
|
141
185
|
severity: "critical" | "high" | "low" | "medium";
|
|
142
186
|
}[];
|
|
187
|
+
requirementVerdicts?: {
|
|
188
|
+
requirementId: string;
|
|
189
|
+
status: "met" | "not_covered" | "not_met";
|
|
190
|
+
detail?: string | undefined;
|
|
191
|
+
}[] | undefined;
|
|
143
192
|
environment?: "ephemeral" | "local" | undefined;
|
|
144
193
|
screenshots?: {
|
|
145
194
|
view: string;
|
|
@@ -166,6 +215,11 @@ export declare const testReportSchema: v.SchemaWithPipe<readonly [v.ObjectSchema
|
|
|
166
215
|
detail: string;
|
|
167
216
|
severity: "critical" | "high" | "low" | "medium";
|
|
168
217
|
}[];
|
|
218
|
+
requirementVerdicts?: {
|
|
219
|
+
requirementId: string;
|
|
220
|
+
status: "met" | "not_covered" | "not_met";
|
|
221
|
+
detail?: string | undefined;
|
|
222
|
+
}[] | undefined;
|
|
169
223
|
environment?: "ephemeral" | "local" | undefined;
|
|
170
224
|
screenshots?: {
|
|
171
225
|
view: string;
|
package/dist/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,qDAAqC,CAAA;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAE/C,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,oEAAoD,CAAA;AAC1F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,yFAAyF;AACzF,eAAO,MAAM,iBAAiB;IAC5B,oCAAoC;;IAEpC,oDAAoD;;IAEpD,uDAAuD;;aAEvD,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB;IAC5B,4DAA4D;;IAE5D,sDAAsD;;IAEtD,uEAAuE;;aAEvE,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;IAC/B,gFAAgF;;IAEhF,kFAAkF;;IAElF,gFAAgF;;;;IAIhF,gFAAgF;;aAEhF,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,qDAAqC,CAAA;AACvE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAE/C,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,oEAAoD,CAAA;AAC1F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,yFAAyF;AACzF,eAAO,MAAM,iBAAiB;IAC5B,oCAAoC;;IAEpC,oDAAoD;;IAEpD,uDAAuD;;aAEvD,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB;IAC5B,4DAA4D;;IAE5D,sDAAsD;;IAEtD,uEAAuE;;aAEvE,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;IAC/B,gFAAgF;;IAEhF,kFAAkF;;IAElF,gFAAgF;;;;IAIhF,gFAAgF;;aAEhF,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,gEAAgD,CAAA;AAC3F,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAE3F;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;IACnC,sEAAsE;;;IAGtE,oEAAoE;;aAEpE,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAkD/E;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IA/C3B,sEAAsE;;IAEtE,0DAA0D;;IAE1D,2EAA2E;;IAE3E,wBAAwB;;QA/ExB,4DAA4D;;QAE5D,sDAAsD;;QAEtD,uEAAuE;;;IA6EvE;;;;OAIG;;QAhGH,oCAAoC;;QAEpC,oDAAoD;;QAEpD,uDAAuD;;;IA8FvD;;;;OAIG;;QAlCH,sEAAsE;;;QAGtE,oEAAoE;;;IAiCpE,kEAAkE;;IAElE;;;;OAIG;;QAjFH,gFAAgF;;QAEhF,kFAAkF;;QAElF,gFAAgF;;;;QAIhF,gFAAgF;;;IA2EhF;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAcJ,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAE1D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB;IACjC,8EAA8E;;IAE9E,oEAAoE;;IAEpE,8CAA8C;;IAE9C,8CAA8C;;IAE9C,+EAA+E;;IAE/E,+EAA+E;;aAE/E,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAG7E"}
|
package/dist/testing.js
CHANGED
|
@@ -67,6 +67,36 @@ export const testScreenshotSchema = v.object({
|
|
|
67
67
|
/** The matching reference design image's artifact id, when one was supplied. */
|
|
68
68
|
referenceArtifactId: v.optional(v.string()),
|
|
69
69
|
});
|
|
70
|
+
/**
|
|
71
|
+
* How a spec requirement fared when the Tester went looking for it. THREE-VALUED on purpose:
|
|
72
|
+
* "we didn't check" and "it's broken" must never render the same, which is the entire point of
|
|
73
|
+
* keeping the list — a reviewer reading a two-valued list cannot tell a requirement that was
|
|
74
|
+
* verified from one nobody looked at.
|
|
75
|
+
*
|
|
76
|
+
* - `met` — its acceptance criteria were exercised and observed to hold.
|
|
77
|
+
* - `not_met` — exercised and observed NOT to hold.
|
|
78
|
+
* - `not_covered` — not exercised this run (out of the change's blast radius, unreachable in
|
|
79
|
+
* this setup, or simply not yet built — an `aspirational` requirement is
|
|
80
|
+
* EXPECTED to land here and must never be reported as `not_met`).
|
|
81
|
+
*/
|
|
82
|
+
export const requirementVerdictStatusSchema = v.picklist(['met', 'not_met', 'not_covered']);
|
|
83
|
+
/**
|
|
84
|
+
* One requirement-level verdict, keyed by the **spec requirement id** (`spec/modules/<m>/<g>.json`
|
|
85
|
+
* → `requirements[].id`, surfaced to the Tester as the `# requirement: <id>` comment above each
|
|
86
|
+
* Gherkin scenario). Deliberately the SAME id space as the spec — a second id space would make
|
|
87
|
+
* the join to `spec/` guesswork, which is what sank the withdrawn per-service store.
|
|
88
|
+
*
|
|
89
|
+
* Two consumers read this, and they must agree: the promotion post-op flips a `met` requirement
|
|
90
|
+
* from `aspirational` to `established` in the in-repo spec, and the PR verification report joins
|
|
91
|
+
* it back to the spec to render criterion → evidence.
|
|
92
|
+
*/
|
|
93
|
+
export const requirementVerdictSchema = v.object({
|
|
94
|
+
/** The spec requirement's stable id (e.g. `req-login-rate-limit`). */
|
|
95
|
+
requirementId: v.string(),
|
|
96
|
+
status: requirementVerdictStatusSchema,
|
|
97
|
+
/** What was actually observed — the evidence behind the verdict. */
|
|
98
|
+
detail: v.optional(v.string()),
|
|
99
|
+
});
|
|
70
100
|
/**
|
|
71
101
|
* A Tester's structured report. `greenlight` is the gate's verdict: true means the
|
|
72
102
|
* change is safe to release (no blocking concerns); false routes the run through
|
|
@@ -89,6 +119,12 @@ const testReportObjectSchema = v.object({
|
|
|
89
119
|
* their own, withhold the greenlight. The engine re-applies this rule defensively.
|
|
90
120
|
*/
|
|
91
121
|
concerns: v.array(testConcernSchema),
|
|
122
|
+
/**
|
|
123
|
+
* Per-spec-requirement verdicts, keyed by the requirement id the Gherkin scenarios carry.
|
|
124
|
+
* Optional: absent on a run whose service has no `spec/`, and on every report produced before
|
|
125
|
+
* this contract existed — both read as "no requirement was ruled on", never as a failure.
|
|
126
|
+
*/
|
|
127
|
+
requirementVerdicts: v.optional(v.array(requirementVerdictSchema)),
|
|
92
128
|
/** Which environment the suite ran in, echoed back for the UI. */
|
|
93
129
|
environment: v.optional(testEnvironmentSchema),
|
|
94
130
|
/**
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|