agentskeptic 0.1.1 → 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +342 -342
  3. package/dist/cli.js +157 -157
  4. package/dist/debug-ui/app.css +188 -188
  5. package/dist/debug-ui/app.js +245 -245
  6. package/dist/debug-ui/index.html +79 -79
  7. package/dist/enforceCli.js +11 -11
  8. package/dist/planTransition.test.js +235 -235
  9. package/dist/planTransitionPathHarvest.test.js +116 -116
  10. package/dist/quickVerify/postgresCatalog.js +53 -53
  11. package/package.json +1 -1
  12. package/schemas/agent-run-record-v1.schema.json +51 -51
  13. package/schemas/agent-run-record-v2.schema.json +61 -61
  14. package/schemas/assurance-manifest-v1.schema.json +28 -28
  15. package/schemas/assurance-run-report-v1.schema.json +28 -28
  16. package/schemas/ci-lock-v1.schema.json +163 -163
  17. package/schemas/cli-error-envelope.schema.json +48 -48
  18. package/schemas/event.schema.json +111 -111
  19. package/schemas/execution-trace-view.schema.json +122 -122
  20. package/schemas/plan-validation-core.schema.json +95 -95
  21. package/schemas/quick-verify-report.schema.json +251 -251
  22. package/schemas/registry-validation-result.schema.json +99 -99
  23. package/schemas/run-comparison-report.schema.json +513 -513
  24. package/schemas/tools-registry-export.schema.json +9 -9
  25. package/schemas/tools-registry.schema.json +284 -284
  26. package/schemas/workflow-engine-result.schema.json +591 -591
  27. package/schemas/workflow-result-compare-input.schema.json +15 -15
  28. package/schemas/workflow-result-signature.schema.json +20 -20
  29. package/schemas/workflow-result-v9.schema.json +85 -85
  30. package/schemas/workflow-result.schema.json +80 -80
  31. package/schemas/workflow-truth-report.schema.json +761 -761
  32. package/dist/failureOriginSchemaEnum.test.d.ts +0 -2
  33. package/dist/failureOriginSchemaEnum.test.d.ts.map +0 -1
  34. package/dist/failureOriginSchemaEnum.test.js +0 -21
  35. package/dist/failureOriginSchemaEnum.test.js.map +0 -1
  36. package/dist/failureOriginSchemaParity.test.d.ts +0 -2
  37. package/dist/failureOriginSchemaParity.test.d.ts.map +0 -1
  38. package/dist/failureOriginSchemaParity.test.js +0 -33
  39. package/dist/failureOriginSchemaParity.test.js.map +0 -1
  40. package/dist/slice6.compare.ac.test.d.ts +0 -2
  41. package/dist/slice6.compare.ac.test.d.ts.map +0 -1
  42. package/dist/slice6.compare.ac.test.js +0 -81
  43. package/dist/slice6.compare.ac.test.js.map +0 -1
@@ -1,513 +1,513 @@
1
- {
2
- "$id": "https://agentskeptic.com/schemas/run-comparison-report.schema.json",
3
- "$comment": "Structural schema. Behavioral semantics: docs/agentskeptic.md#cross-run-comparison-normative",
4
- "title": "RunComparisonReport",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": [
8
- "schemaVersion",
9
- "workflowId",
10
- "runs",
11
- "perRunActionableFailures",
12
- "categoryHistogram",
13
- "actionableCategoryRecurrence",
14
- "pairwise",
15
- "recurrence",
16
- "reliabilityAssessment",
17
- "compareHighlights"
18
- ],
19
- "properties": {
20
- "schemaVersion": { "const": 4 },
21
- "workflowId": { "type": "string" },
22
- "runs": {
23
- "type": "array",
24
- "items": {
25
- "type": "object",
26
- "additionalProperties": false,
27
- "required": ["runIndex", "displayLabel"],
28
- "properties": {
29
- "runIndex": { "type": "integer", "minimum": 0 },
30
- "displayLabel": { "type": "string" }
31
- }
32
- }
33
- },
34
- "perRunActionableFailures": {
35
- "type": "array",
36
- "items": {
37
- "type": "object",
38
- "additionalProperties": false,
39
- "required": ["runIndex", "category", "severity", "recommendedAction", "automationSafe"],
40
- "properties": {
41
- "runIndex": { "type": "integer", "minimum": 0 },
42
- "category": {
43
- "oneOf": [
44
- {
45
- "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/actionableFailureCategory"
46
- },
47
- { "const": "complete" }
48
- ]
49
- },
50
- "severity": { "type": "string", "enum": ["high", "medium", "low"] },
51
- "recommendedAction": {
52
- "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/recommendedAction"
53
- },
54
- "automationSafe": { "type": "boolean" }
55
- }
56
- }
57
- },
58
- "categoryHistogram": {
59
- "type": "array",
60
- "items": {
61
- "type": "object",
62
- "additionalProperties": false,
63
- "required": ["category", "count"],
64
- "properties": {
65
- "category": {
66
- "oneOf": [
67
- {
68
- "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/actionableFailureCategory"
69
- },
70
- { "const": "complete" }
71
- ]
72
- },
73
- "count": { "type": "integer", "minimum": 0 }
74
- }
75
- }
76
- },
77
- "actionableCategoryRecurrence": {
78
- "type": "array",
79
- "items": {
80
- "type": "object",
81
- "additionalProperties": false,
82
- "required": [
83
- "category",
84
- "runIndicesAscending",
85
- "runsHitCount",
86
- "maxConsecutiveRunStreak"
87
- ],
88
- "properties": {
89
- "category": {
90
- "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/actionableFailureCategory"
91
- },
92
- "runIndicesAscending": {
93
- "type": "array",
94
- "items": { "type": "integer", "minimum": 0 }
95
- },
96
- "runsHitCount": { "type": "integer", "minimum": 1 },
97
- "maxConsecutiveRunStreak": { "type": "integer", "minimum": 1 }
98
- }
99
- }
100
- },
101
- "pairwise": {
102
- "type": "object",
103
- "additionalProperties": false,
104
- "required": [
105
- "priorRunIndex",
106
- "currentRunIndex",
107
- "runLevel",
108
- "ambiguousLogicalKeyResolutions",
109
- "bucketA",
110
- "bucketB"
111
- ],
112
- "properties": {
113
- "priorRunIndex": { "type": "integer", "minimum": 0 },
114
- "currentRunIndex": { "type": "integer", "minimum": 0 },
115
- "runLevel": {
116
- "type": "object",
117
- "additionalProperties": false,
118
- "required": ["introducedRunLevelCodes", "resolvedRunLevelCodes"],
119
- "properties": {
120
- "introducedRunLevelCodes": {
121
- "type": "array",
122
- "items": { "type": "string" }
123
- },
124
- "resolvedRunLevelCodes": {
125
- "type": "array",
126
- "items": { "type": "string" }
127
- }
128
- }
129
- },
130
- "ambiguousLogicalKeyResolutions": {
131
- "type": "array",
132
- "items": {
133
- "type": "object",
134
- "additionalProperties": false,
135
- "required": ["logicalStepKey", "chosenSeq", "droppedSeq"],
136
- "properties": {
137
- "logicalStepKey": { "type": "string" },
138
- "chosenSeq": { "type": "integer", "minimum": 0 },
139
- "droppedSeq": { "type": "integer", "minimum": 0 }
140
- }
141
- }
142
- },
143
- "bucketA": {
144
- "type": "array",
145
- "items": { "$ref": "#/$defs/bucketAEntry" }
146
- },
147
- "bucketB": {
148
- "type": "object",
149
- "additionalProperties": false,
150
- "required": [
151
- "introducedFailureSignatures",
152
- "resolvedFailureSignatures",
153
- "unchangedFailureInstanceCounts"
154
- ],
155
- "properties": {
156
- "introducedFailureSignatures": {
157
- "type": "array",
158
- "items": {
159
- "type": "object",
160
- "additionalProperties": false,
161
- "required": ["signature", "count"],
162
- "properties": {
163
- "signature": { "type": "string" },
164
- "count": { "type": "integer", "minimum": 1 }
165
- }
166
- }
167
- },
168
- "resolvedFailureSignatures": {
169
- "type": "array",
170
- "items": {
171
- "type": "object",
172
- "additionalProperties": false,
173
- "required": ["signature", "count"],
174
- "properties": {
175
- "signature": { "type": "string" },
176
- "count": { "type": "integer", "minimum": 1 }
177
- }
178
- }
179
- },
180
- "unchangedFailureInstanceCounts": {
181
- "type": "array",
182
- "items": {
183
- "type": "object",
184
- "additionalProperties": false,
185
- "required": ["signature", "matchedCount"],
186
- "properties": {
187
- "signature": { "type": "string" },
188
- "matchedCount": { "type": "integer", "minimum": 1 }
189
- }
190
- }
191
- }
192
- }
193
- }
194
- }
195
- },
196
- "reliabilityAssessment": {
197
- "type": "object",
198
- "additionalProperties": false,
199
- "required": [
200
- "windowTrend",
201
- "pairwiseTrend",
202
- "recurrenceBurden",
203
- "headlineVerdict",
204
- "headlineRationale"
205
- ],
206
- "properties": {
207
- "windowTrend": {
208
- "type": "string",
209
- "enum": ["improving", "worsening", "unchanged", "mixed"]
210
- },
211
- "pairwiseTrend": {
212
- "type": "string",
213
- "enum": ["improving", "worsening", "unchanged", "mixed"]
214
- },
215
- "recurrenceBurden": {
216
- "type": "object",
217
- "additionalProperties": false,
218
- "required": ["patternCount", "maxRunsHitCount", "crossRunFailure", "rationale"],
219
- "properties": {
220
- "patternCount": { "type": "integer", "minimum": 0 },
221
- "maxRunsHitCount": { "type": "integer", "minimum": 0 },
222
- "crossRunFailure": { "type": "boolean" },
223
- "rationale": { "type": "string" }
224
- }
225
- },
226
- "headlineVerdict": {
227
- "type": "string",
228
- "enum": ["improving", "worsening", "unchanged", "mixed"]
229
- },
230
- "headlineRationale": { "type": "string" }
231
- }
232
- },
233
- "compareHighlights": {
234
- "type": "object",
235
- "additionalProperties": false,
236
- "required": [
237
- "introducedLogicalStepKeys",
238
- "resolvedLogicalStepKeys",
239
- "bothFailingChurn",
240
- "bucketBIntroducedSignatures",
241
- "bucketBResolvedSignatures",
242
- "recurringSignatures"
243
- ],
244
- "properties": {
245
- "introducedLogicalStepKeys": {
246
- "type": "array",
247
- "items": { "type": "string" }
248
- },
249
- "resolvedLogicalStepKeys": {
250
- "type": "array",
251
- "items": { "type": "string" }
252
- },
253
- "bothFailingChurn": {
254
- "type": "array",
255
- "items": {
256
- "type": "object",
257
- "additionalProperties": false,
258
- "required": [
259
- "logicalStepKey",
260
- "introducedStepReasonCodes",
261
- "resolvedStepReasonCodes"
262
- ],
263
- "properties": {
264
- "logicalStepKey": { "type": "string" },
265
- "introducedStepReasonCodes": {
266
- "type": "array",
267
- "items": { "type": "string" }
268
- },
269
- "resolvedStepReasonCodes": {
270
- "type": "array",
271
- "items": { "type": "string" }
272
- }
273
- }
274
- }
275
- },
276
- "bucketBIntroducedSignatures": {
277
- "type": "array",
278
- "items": {
279
- "type": "object",
280
- "additionalProperties": false,
281
- "required": ["signature", "count"],
282
- "properties": {
283
- "signature": { "type": "string" },
284
- "count": { "type": "integer", "minimum": 1 }
285
- }
286
- }
287
- },
288
- "bucketBResolvedSignatures": {
289
- "type": "array",
290
- "items": {
291
- "type": "object",
292
- "additionalProperties": false,
293
- "required": ["signature", "count"],
294
- "properties": {
295
- "signature": { "type": "string" },
296
- "count": { "type": "integer", "minimum": 1 }
297
- }
298
- }
299
- },
300
- "recurringSignatures": {
301
- "type": "array",
302
- "items": { "type": "string" }
303
- }
304
- }
305
- },
306
- "recurrence": {
307
- "type": "object",
308
- "additionalProperties": false,
309
- "required": ["patterns"],
310
- "properties": {
311
- "patterns": {
312
- "type": "array",
313
- "items": {
314
- "type": "object",
315
- "additionalProperties": false,
316
- "required": ["signature", "runIndices", "runsHitCount", "exemplars"],
317
- "properties": {
318
- "signature": { "type": "string" },
319
- "runIndices": {
320
- "type": "array",
321
- "items": { "type": "integer", "minimum": 0 }
322
- },
323
- "runsHitCount": { "type": "integer", "minimum": 2 },
324
- "exemplars": {
325
- "type": "array",
326
- "items": {
327
- "type": "object",
328
- "additionalProperties": false,
329
- "required": ["runIndex", "seq", "toolId"],
330
- "properties": {
331
- "runIndex": { "type": "integer", "minimum": 0 },
332
- "seq": { "type": "integer", "minimum": 0 },
333
- "toolId": { "type": "string" }
334
- }
335
- }
336
- }
337
- }
338
- }
339
- }
340
- }
341
- }
342
- },
343
- "$defs": {
344
- "bucketAEntry": {
345
- "oneOf": [
346
- {
347
- "type": "object",
348
- "additionalProperties": false,
349
- "required": [
350
- "kind",
351
- "logicalStepKey",
352
- "seqPrior",
353
- "seqCurrent",
354
- "toolIdPrior",
355
- "toolIdCurrent"
356
- ],
357
- "properties": {
358
- "kind": { "const": "unchangedOk" },
359
- "logicalStepKey": { "type": "string" },
360
- "seqPrior": { "type": "integer", "minimum": 0 },
361
- "seqCurrent": { "type": "integer", "minimum": 0 },
362
- "toolIdPrior": { "type": "string" },
363
- "toolIdCurrent": { "type": "string" }
364
- }
365
- },
366
- {
367
- "type": "object",
368
- "additionalProperties": false,
369
- "required": [
370
- "kind",
371
- "logicalStepKey",
372
- "seqPrior",
373
- "seqCurrent",
374
- "toolIdPrior",
375
- "toolIdCurrent"
376
- ],
377
- "properties": {
378
- "kind": { "const": "introducedFailure" },
379
- "logicalStepKey": { "type": "string" },
380
- "seqPrior": { "type": "integer", "minimum": 0 },
381
- "seqCurrent": { "type": "integer", "minimum": 0 },
382
- "toolIdPrior": { "type": "string" },
383
- "toolIdCurrent": { "type": "string" }
384
- }
385
- },
386
- {
387
- "type": "object",
388
- "additionalProperties": false,
389
- "required": [
390
- "kind",
391
- "logicalStepKey",
392
- "seqPrior",
393
- "seqCurrent",
394
- "toolIdPrior",
395
- "toolIdCurrent"
396
- ],
397
- "properties": {
398
- "kind": { "const": "resolvedFailure" },
399
- "logicalStepKey": { "type": "string" },
400
- "seqPrior": { "type": "integer", "minimum": 0 },
401
- "seqCurrent": { "type": "integer", "minimum": 0 },
402
- "toolIdPrior": { "type": "string" },
403
- "toolIdCurrent": { "type": "string" }
404
- }
405
- },
406
- {
407
- "type": "object",
408
- "additionalProperties": false,
409
- "required": [
410
- "kind",
411
- "logicalStepKey",
412
- "seqPrior",
413
- "toolIdPrior",
414
- "priorWasFailing"
415
- ],
416
- "properties": {
417
- "kind": { "const": "structuralRemoval" },
418
- "logicalStepKey": { "type": "string" },
419
- "seqPrior": { "type": "integer", "minimum": 0 },
420
- "toolIdPrior": { "type": "string" },
421
- "priorWasFailing": { "type": "boolean" }
422
- }
423
- },
424
- {
425
- "type": "object",
426
- "additionalProperties": false,
427
- "required": ["kind", "logicalStepKey", "seqCurrent", "toolIdCurrent", "currentIsFailing"],
428
- "properties": {
429
- "kind": { "const": "structuralAddition" },
430
- "logicalStepKey": { "type": "string" },
431
- "seqCurrent": { "type": "integer", "minimum": 0 },
432
- "toolIdCurrent": { "type": "string" },
433
- "currentIsFailing": { "type": "boolean" }
434
- }
435
- },
436
- {
437
- "type": "object",
438
- "additionalProperties": false,
439
- "required": [
440
- "kind",
441
- "logicalStepKey",
442
- "seqPrior",
443
- "seqCurrent",
444
- "toolIdPrior",
445
- "toolIdCurrent",
446
- "toolIdChanged",
447
- "introducedStepReasonCodes",
448
- "resolvedStepReasonCodes",
449
- "effects"
450
- ],
451
- "properties": {
452
- "kind": { "const": "bothFailing" },
453
- "logicalStepKey": { "type": "string" },
454
- "seqPrior": { "type": "integer", "minimum": 0 },
455
- "seqCurrent": { "type": "integer", "minimum": 0 },
456
- "toolIdPrior": { "type": "string" },
457
- "toolIdCurrent": { "type": "string" },
458
- "toolIdChanged": { "type": "boolean" },
459
- "introducedStepReasonCodes": {
460
- "type": "array",
461
- "items": { "type": "string" }
462
- },
463
- "resolvedStepReasonCodes": {
464
- "type": "array",
465
- "items": { "type": "string" }
466
- },
467
- "effects": {
468
- "type": "array",
469
- "items": {
470
- "type": "object",
471
- "additionalProperties": false,
472
- "required": [
473
- "effectId",
474
- "kind",
475
- "introducedReasonCodes",
476
- "resolvedReasonCodes",
477
- "statusPrior",
478
- "statusCurrent"
479
- ],
480
- "properties": {
481
- "effectId": { "type": "string" },
482
- "kind": {
483
- "type": "string",
484
- "enum": [
485
- "introducedFailure",
486
- "resolvedFailure",
487
- "bothFailing",
488
- "unchangedOk"
489
- ]
490
- },
491
- "introducedReasonCodes": {
492
- "type": "array",
493
- "items": { "type": "string" }
494
- },
495
- "resolvedReasonCodes": {
496
- "type": "array",
497
- "items": { "type": "string" }
498
- },
499
- "statusPrior": {
500
- "type": ["string", "null"]
501
- },
502
- "statusCurrent": {
503
- "type": ["string", "null"]
504
- }
505
- }
506
- }
507
- }
508
- }
509
- }
510
- ]
511
- }
512
- }
513
- }
1
+ {
2
+ "$id": "https://agentskeptic.com/schemas/run-comparison-report.schema.json",
3
+ "$comment": "Structural schema. Behavioral semantics: docs/agentskeptic.md#cross-run-comparison-normative",
4
+ "title": "RunComparisonReport",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "workflowId",
10
+ "runs",
11
+ "perRunActionableFailures",
12
+ "categoryHistogram",
13
+ "actionableCategoryRecurrence",
14
+ "pairwise",
15
+ "recurrence",
16
+ "reliabilityAssessment",
17
+ "compareHighlights"
18
+ ],
19
+ "properties": {
20
+ "schemaVersion": { "const": 4 },
21
+ "workflowId": { "type": "string" },
22
+ "runs": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": ["runIndex", "displayLabel"],
28
+ "properties": {
29
+ "runIndex": { "type": "integer", "minimum": 0 },
30
+ "displayLabel": { "type": "string" }
31
+ }
32
+ }
33
+ },
34
+ "perRunActionableFailures": {
35
+ "type": "array",
36
+ "items": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": ["runIndex", "category", "severity", "recommendedAction", "automationSafe"],
40
+ "properties": {
41
+ "runIndex": { "type": "integer", "minimum": 0 },
42
+ "category": {
43
+ "oneOf": [
44
+ {
45
+ "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/actionableFailureCategory"
46
+ },
47
+ { "const": "complete" }
48
+ ]
49
+ },
50
+ "severity": { "type": "string", "enum": ["high", "medium", "low"] },
51
+ "recommendedAction": {
52
+ "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/recommendedAction"
53
+ },
54
+ "automationSafe": { "type": "boolean" }
55
+ }
56
+ }
57
+ },
58
+ "categoryHistogram": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "object",
62
+ "additionalProperties": false,
63
+ "required": ["category", "count"],
64
+ "properties": {
65
+ "category": {
66
+ "oneOf": [
67
+ {
68
+ "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/actionableFailureCategory"
69
+ },
70
+ { "const": "complete" }
71
+ ]
72
+ },
73
+ "count": { "type": "integer", "minimum": 0 }
74
+ }
75
+ }
76
+ },
77
+ "actionableCategoryRecurrence": {
78
+ "type": "array",
79
+ "items": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": [
83
+ "category",
84
+ "runIndicesAscending",
85
+ "runsHitCount",
86
+ "maxConsecutiveRunStreak"
87
+ ],
88
+ "properties": {
89
+ "category": {
90
+ "$ref": "https://agentskeptic.com/schemas/workflow-truth-report.schema.json#/$defs/actionableFailureCategory"
91
+ },
92
+ "runIndicesAscending": {
93
+ "type": "array",
94
+ "items": { "type": "integer", "minimum": 0 }
95
+ },
96
+ "runsHitCount": { "type": "integer", "minimum": 1 },
97
+ "maxConsecutiveRunStreak": { "type": "integer", "minimum": 1 }
98
+ }
99
+ }
100
+ },
101
+ "pairwise": {
102
+ "type": "object",
103
+ "additionalProperties": false,
104
+ "required": [
105
+ "priorRunIndex",
106
+ "currentRunIndex",
107
+ "runLevel",
108
+ "ambiguousLogicalKeyResolutions",
109
+ "bucketA",
110
+ "bucketB"
111
+ ],
112
+ "properties": {
113
+ "priorRunIndex": { "type": "integer", "minimum": 0 },
114
+ "currentRunIndex": { "type": "integer", "minimum": 0 },
115
+ "runLevel": {
116
+ "type": "object",
117
+ "additionalProperties": false,
118
+ "required": ["introducedRunLevelCodes", "resolvedRunLevelCodes"],
119
+ "properties": {
120
+ "introducedRunLevelCodes": {
121
+ "type": "array",
122
+ "items": { "type": "string" }
123
+ },
124
+ "resolvedRunLevelCodes": {
125
+ "type": "array",
126
+ "items": { "type": "string" }
127
+ }
128
+ }
129
+ },
130
+ "ambiguousLogicalKeyResolutions": {
131
+ "type": "array",
132
+ "items": {
133
+ "type": "object",
134
+ "additionalProperties": false,
135
+ "required": ["logicalStepKey", "chosenSeq", "droppedSeq"],
136
+ "properties": {
137
+ "logicalStepKey": { "type": "string" },
138
+ "chosenSeq": { "type": "integer", "minimum": 0 },
139
+ "droppedSeq": { "type": "integer", "minimum": 0 }
140
+ }
141
+ }
142
+ },
143
+ "bucketA": {
144
+ "type": "array",
145
+ "items": { "$ref": "#/$defs/bucketAEntry" }
146
+ },
147
+ "bucketB": {
148
+ "type": "object",
149
+ "additionalProperties": false,
150
+ "required": [
151
+ "introducedFailureSignatures",
152
+ "resolvedFailureSignatures",
153
+ "unchangedFailureInstanceCounts"
154
+ ],
155
+ "properties": {
156
+ "introducedFailureSignatures": {
157
+ "type": "array",
158
+ "items": {
159
+ "type": "object",
160
+ "additionalProperties": false,
161
+ "required": ["signature", "count"],
162
+ "properties": {
163
+ "signature": { "type": "string" },
164
+ "count": { "type": "integer", "minimum": 1 }
165
+ }
166
+ }
167
+ },
168
+ "resolvedFailureSignatures": {
169
+ "type": "array",
170
+ "items": {
171
+ "type": "object",
172
+ "additionalProperties": false,
173
+ "required": ["signature", "count"],
174
+ "properties": {
175
+ "signature": { "type": "string" },
176
+ "count": { "type": "integer", "minimum": 1 }
177
+ }
178
+ }
179
+ },
180
+ "unchangedFailureInstanceCounts": {
181
+ "type": "array",
182
+ "items": {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "required": ["signature", "matchedCount"],
186
+ "properties": {
187
+ "signature": { "type": "string" },
188
+ "matchedCount": { "type": "integer", "minimum": 1 }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ }
194
+ }
195
+ },
196
+ "reliabilityAssessment": {
197
+ "type": "object",
198
+ "additionalProperties": false,
199
+ "required": [
200
+ "windowTrend",
201
+ "pairwiseTrend",
202
+ "recurrenceBurden",
203
+ "headlineVerdict",
204
+ "headlineRationale"
205
+ ],
206
+ "properties": {
207
+ "windowTrend": {
208
+ "type": "string",
209
+ "enum": ["improving", "worsening", "unchanged", "mixed"]
210
+ },
211
+ "pairwiseTrend": {
212
+ "type": "string",
213
+ "enum": ["improving", "worsening", "unchanged", "mixed"]
214
+ },
215
+ "recurrenceBurden": {
216
+ "type": "object",
217
+ "additionalProperties": false,
218
+ "required": ["patternCount", "maxRunsHitCount", "crossRunFailure", "rationale"],
219
+ "properties": {
220
+ "patternCount": { "type": "integer", "minimum": 0 },
221
+ "maxRunsHitCount": { "type": "integer", "minimum": 0 },
222
+ "crossRunFailure": { "type": "boolean" },
223
+ "rationale": { "type": "string" }
224
+ }
225
+ },
226
+ "headlineVerdict": {
227
+ "type": "string",
228
+ "enum": ["improving", "worsening", "unchanged", "mixed"]
229
+ },
230
+ "headlineRationale": { "type": "string" }
231
+ }
232
+ },
233
+ "compareHighlights": {
234
+ "type": "object",
235
+ "additionalProperties": false,
236
+ "required": [
237
+ "introducedLogicalStepKeys",
238
+ "resolvedLogicalStepKeys",
239
+ "bothFailingChurn",
240
+ "bucketBIntroducedSignatures",
241
+ "bucketBResolvedSignatures",
242
+ "recurringSignatures"
243
+ ],
244
+ "properties": {
245
+ "introducedLogicalStepKeys": {
246
+ "type": "array",
247
+ "items": { "type": "string" }
248
+ },
249
+ "resolvedLogicalStepKeys": {
250
+ "type": "array",
251
+ "items": { "type": "string" }
252
+ },
253
+ "bothFailingChurn": {
254
+ "type": "array",
255
+ "items": {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "required": [
259
+ "logicalStepKey",
260
+ "introducedStepReasonCodes",
261
+ "resolvedStepReasonCodes"
262
+ ],
263
+ "properties": {
264
+ "logicalStepKey": { "type": "string" },
265
+ "introducedStepReasonCodes": {
266
+ "type": "array",
267
+ "items": { "type": "string" }
268
+ },
269
+ "resolvedStepReasonCodes": {
270
+ "type": "array",
271
+ "items": { "type": "string" }
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "bucketBIntroducedSignatures": {
277
+ "type": "array",
278
+ "items": {
279
+ "type": "object",
280
+ "additionalProperties": false,
281
+ "required": ["signature", "count"],
282
+ "properties": {
283
+ "signature": { "type": "string" },
284
+ "count": { "type": "integer", "minimum": 1 }
285
+ }
286
+ }
287
+ },
288
+ "bucketBResolvedSignatures": {
289
+ "type": "array",
290
+ "items": {
291
+ "type": "object",
292
+ "additionalProperties": false,
293
+ "required": ["signature", "count"],
294
+ "properties": {
295
+ "signature": { "type": "string" },
296
+ "count": { "type": "integer", "minimum": 1 }
297
+ }
298
+ }
299
+ },
300
+ "recurringSignatures": {
301
+ "type": "array",
302
+ "items": { "type": "string" }
303
+ }
304
+ }
305
+ },
306
+ "recurrence": {
307
+ "type": "object",
308
+ "additionalProperties": false,
309
+ "required": ["patterns"],
310
+ "properties": {
311
+ "patterns": {
312
+ "type": "array",
313
+ "items": {
314
+ "type": "object",
315
+ "additionalProperties": false,
316
+ "required": ["signature", "runIndices", "runsHitCount", "exemplars"],
317
+ "properties": {
318
+ "signature": { "type": "string" },
319
+ "runIndices": {
320
+ "type": "array",
321
+ "items": { "type": "integer", "minimum": 0 }
322
+ },
323
+ "runsHitCount": { "type": "integer", "minimum": 2 },
324
+ "exemplars": {
325
+ "type": "array",
326
+ "items": {
327
+ "type": "object",
328
+ "additionalProperties": false,
329
+ "required": ["runIndex", "seq", "toolId"],
330
+ "properties": {
331
+ "runIndex": { "type": "integer", "minimum": 0 },
332
+ "seq": { "type": "integer", "minimum": 0 },
333
+ "toolId": { "type": "string" }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ },
343
+ "$defs": {
344
+ "bucketAEntry": {
345
+ "oneOf": [
346
+ {
347
+ "type": "object",
348
+ "additionalProperties": false,
349
+ "required": [
350
+ "kind",
351
+ "logicalStepKey",
352
+ "seqPrior",
353
+ "seqCurrent",
354
+ "toolIdPrior",
355
+ "toolIdCurrent"
356
+ ],
357
+ "properties": {
358
+ "kind": { "const": "unchangedOk" },
359
+ "logicalStepKey": { "type": "string" },
360
+ "seqPrior": { "type": "integer", "minimum": 0 },
361
+ "seqCurrent": { "type": "integer", "minimum": 0 },
362
+ "toolIdPrior": { "type": "string" },
363
+ "toolIdCurrent": { "type": "string" }
364
+ }
365
+ },
366
+ {
367
+ "type": "object",
368
+ "additionalProperties": false,
369
+ "required": [
370
+ "kind",
371
+ "logicalStepKey",
372
+ "seqPrior",
373
+ "seqCurrent",
374
+ "toolIdPrior",
375
+ "toolIdCurrent"
376
+ ],
377
+ "properties": {
378
+ "kind": { "const": "introducedFailure" },
379
+ "logicalStepKey": { "type": "string" },
380
+ "seqPrior": { "type": "integer", "minimum": 0 },
381
+ "seqCurrent": { "type": "integer", "minimum": 0 },
382
+ "toolIdPrior": { "type": "string" },
383
+ "toolIdCurrent": { "type": "string" }
384
+ }
385
+ },
386
+ {
387
+ "type": "object",
388
+ "additionalProperties": false,
389
+ "required": [
390
+ "kind",
391
+ "logicalStepKey",
392
+ "seqPrior",
393
+ "seqCurrent",
394
+ "toolIdPrior",
395
+ "toolIdCurrent"
396
+ ],
397
+ "properties": {
398
+ "kind": { "const": "resolvedFailure" },
399
+ "logicalStepKey": { "type": "string" },
400
+ "seqPrior": { "type": "integer", "minimum": 0 },
401
+ "seqCurrent": { "type": "integer", "minimum": 0 },
402
+ "toolIdPrior": { "type": "string" },
403
+ "toolIdCurrent": { "type": "string" }
404
+ }
405
+ },
406
+ {
407
+ "type": "object",
408
+ "additionalProperties": false,
409
+ "required": [
410
+ "kind",
411
+ "logicalStepKey",
412
+ "seqPrior",
413
+ "toolIdPrior",
414
+ "priorWasFailing"
415
+ ],
416
+ "properties": {
417
+ "kind": { "const": "structuralRemoval" },
418
+ "logicalStepKey": { "type": "string" },
419
+ "seqPrior": { "type": "integer", "minimum": 0 },
420
+ "toolIdPrior": { "type": "string" },
421
+ "priorWasFailing": { "type": "boolean" }
422
+ }
423
+ },
424
+ {
425
+ "type": "object",
426
+ "additionalProperties": false,
427
+ "required": ["kind", "logicalStepKey", "seqCurrent", "toolIdCurrent", "currentIsFailing"],
428
+ "properties": {
429
+ "kind": { "const": "structuralAddition" },
430
+ "logicalStepKey": { "type": "string" },
431
+ "seqCurrent": { "type": "integer", "minimum": 0 },
432
+ "toolIdCurrent": { "type": "string" },
433
+ "currentIsFailing": { "type": "boolean" }
434
+ }
435
+ },
436
+ {
437
+ "type": "object",
438
+ "additionalProperties": false,
439
+ "required": [
440
+ "kind",
441
+ "logicalStepKey",
442
+ "seqPrior",
443
+ "seqCurrent",
444
+ "toolIdPrior",
445
+ "toolIdCurrent",
446
+ "toolIdChanged",
447
+ "introducedStepReasonCodes",
448
+ "resolvedStepReasonCodes",
449
+ "effects"
450
+ ],
451
+ "properties": {
452
+ "kind": { "const": "bothFailing" },
453
+ "logicalStepKey": { "type": "string" },
454
+ "seqPrior": { "type": "integer", "minimum": 0 },
455
+ "seqCurrent": { "type": "integer", "minimum": 0 },
456
+ "toolIdPrior": { "type": "string" },
457
+ "toolIdCurrent": { "type": "string" },
458
+ "toolIdChanged": { "type": "boolean" },
459
+ "introducedStepReasonCodes": {
460
+ "type": "array",
461
+ "items": { "type": "string" }
462
+ },
463
+ "resolvedStepReasonCodes": {
464
+ "type": "array",
465
+ "items": { "type": "string" }
466
+ },
467
+ "effects": {
468
+ "type": "array",
469
+ "items": {
470
+ "type": "object",
471
+ "additionalProperties": false,
472
+ "required": [
473
+ "effectId",
474
+ "kind",
475
+ "introducedReasonCodes",
476
+ "resolvedReasonCodes",
477
+ "statusPrior",
478
+ "statusCurrent"
479
+ ],
480
+ "properties": {
481
+ "effectId": { "type": "string" },
482
+ "kind": {
483
+ "type": "string",
484
+ "enum": [
485
+ "introducedFailure",
486
+ "resolvedFailure",
487
+ "bothFailing",
488
+ "unchangedOk"
489
+ ]
490
+ },
491
+ "introducedReasonCodes": {
492
+ "type": "array",
493
+ "items": { "type": "string" }
494
+ },
495
+ "resolvedReasonCodes": {
496
+ "type": "array",
497
+ "items": { "type": "string" }
498
+ },
499
+ "statusPrior": {
500
+ "type": ["string", "null"]
501
+ },
502
+ "statusCurrent": {
503
+ "type": ["string", "null"]
504
+ }
505
+ }
506
+ }
507
+ }
508
+ }
509
+ }
510
+ ]
511
+ }
512
+ }
513
+ }