mustflow 2.11.0 → 2.16.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.
@@ -36,6 +36,18 @@
36
36
  "status": { "enum": ["passed", "partial", "failed", "blocked"] },
37
37
  "completion_verdict": { "$ref": "#/$defs/completionVerdict" },
38
38
  "evidence_model": { "$ref": "#/$defs/evidenceModel" },
39
+ "failure_fingerprint": {
40
+ "anyOf": [
41
+ { "$ref": "#/$defs/failureFingerprint" },
42
+ { "type": "null" }
43
+ ]
44
+ },
45
+ "repeated_failure_summary": {
46
+ "anyOf": [
47
+ { "$ref": "#/$defs/repeatedFailureSummary" },
48
+ { "type": "null" }
49
+ ]
50
+ },
39
51
  "summary": {
40
52
  "type": "object",
41
53
  "additionalProperties": false,
@@ -57,6 +69,66 @@
57
69
  "manifest_path": { "type": "string" }
58
70
  },
59
71
  "$defs": {
72
+ "failureFingerprint": {
73
+ "type": "object",
74
+ "additionalProperties": false,
75
+ "required": [
76
+ "schema_version",
77
+ "fingerprint",
78
+ "verification_plan_id",
79
+ "failed_intents_hash",
80
+ "exit_code_classes_hash",
81
+ "timeout_flags_hash",
82
+ "error_kinds_hash",
83
+ "diagnostic_hash",
84
+ "risk_codes_hash",
85
+ "affected_surfaces_hash",
86
+ "command_fingerprints_hash"
87
+ ],
88
+ "properties": {
89
+ "schema_version": { "const": "1" },
90
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
91
+ "verification_plan_id": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
92
+ "failed_intents_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
93
+ "exit_code_classes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
94
+ "timeout_flags_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
95
+ "error_kinds_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
96
+ "diagnostic_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
97
+ "risk_codes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
98
+ "affected_surfaces_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
99
+ "command_fingerprints_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
100
+ }
101
+ },
102
+ "repeatedFailureSummary": {
103
+ "type": "object",
104
+ "additionalProperties": false,
105
+ "required": [
106
+ "schema_version",
107
+ "fingerprint",
108
+ "verification_plan_id",
109
+ "status",
110
+ "failed_intents_hash",
111
+ "risk_codes_hash",
112
+ "affected_surfaces_hash",
113
+ "first_seen_at",
114
+ "last_seen_at",
115
+ "seen_count",
116
+ "requires_new_evidence"
117
+ ],
118
+ "properties": {
119
+ "schema_version": { "const": "1" },
120
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
121
+ "verification_plan_id": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
122
+ "status": { "type": "string" },
123
+ "failed_intents_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
124
+ "risk_codes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
125
+ "affected_surfaces_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
126
+ "first_seen_at": { "type": "string" },
127
+ "last_seen_at": { "type": "string" },
128
+ "seen_count": { "type": "integer", "minimum": 1 },
129
+ "requires_new_evidence": { "type": "boolean" }
130
+ }
131
+ },
60
132
  "completionVerdict": {
61
133
  "type": "object",
62
134
  "additionalProperties": false,
@@ -72,6 +144,7 @@
72
144
  "source",
73
145
  "verification_plan_id",
74
146
  "changed_file_count",
147
+ "criteria",
75
148
  "matched_intents",
76
149
  "ran_intents",
77
150
  "passed_intents",
@@ -83,6 +156,14 @@
83
156
  "scope_diff_risk_count",
84
157
  "repeated_failure_count",
85
158
  "validation_ratchet_risk_count",
159
+ "repro_evidence_risk_count",
160
+ "external_evidence_risk_count",
161
+ "write_drift_risk_count",
162
+ "receipt_binding_risk_count",
163
+ "stale_receipt_count",
164
+ "plan_mismatch_count",
165
+ "risks",
166
+ "receipt_binding",
86
167
  "latest_run_status"
87
168
  ],
88
169
  "properties": {
@@ -92,6 +173,7 @@
92
173
  "pattern": "^sha256:[0-9a-f]{64}$"
93
174
  },
94
175
  "changed_file_count": { "type": ["integer", "null"] },
176
+ "criteria": { "$ref": "#/$defs/completionVerdictCriteria" },
95
177
  "matched_intents": { "type": "integer" },
96
178
  "ran_intents": { "type": "integer" },
97
179
  "passed_intents": { "type": "integer" },
@@ -103,6 +185,14 @@
103
185
  "scope_diff_risk_count": { "type": "integer" },
104
186
  "repeated_failure_count": { "type": "integer" },
105
187
  "validation_ratchet_risk_count": { "type": "integer" },
188
+ "repro_evidence_risk_count": { "type": "integer" },
189
+ "external_evidence_risk_count": { "type": "integer" },
190
+ "write_drift_risk_count": { "type": "integer" },
191
+ "receipt_binding_risk_count": { "type": "integer" },
192
+ "stale_receipt_count": { "type": "integer" },
193
+ "plan_mismatch_count": { "type": "integer" },
194
+ "risks": { "$ref": "#/$defs/completionVerdictRisks" },
195
+ "receipt_binding": { "$ref": "#/$defs/completionVerdictReceiptBinding" },
106
196
  "latest_run_status": { "type": ["string", "null"] }
107
197
  }
108
198
  },
@@ -120,6 +210,71 @@
120
210
  }
121
211
  }
122
212
  },
213
+ "completionVerdictCriteria": {
214
+ "type": "object",
215
+ "additionalProperties": false,
216
+ "required": ["total", "covered", "partially_covered", "uncovered", "blocked", "contradicted"],
217
+ "properties": {
218
+ "total": { "type": "integer" },
219
+ "covered": { "type": "integer" },
220
+ "partially_covered": { "type": "integer" },
221
+ "uncovered": { "type": "integer" },
222
+ "blocked": { "type": "integer" },
223
+ "contradicted": { "type": "integer" }
224
+ }
225
+ },
226
+ "completionVerdictRisks": {
227
+ "type": "object",
228
+ "additionalProperties": false,
229
+ "required": [
230
+ "source_anchor",
231
+ "scope_diff",
232
+ "repeated_failure",
233
+ "validation_ratchet",
234
+ "repro_evidence",
235
+ "external_evidence",
236
+ "write_drift",
237
+ "receipt_binding",
238
+ "stale_receipt",
239
+ "plan_mismatch"
240
+ ],
241
+ "properties": {
242
+ "source_anchor": { "type": "integer" },
243
+ "scope_diff": { "type": "integer" },
244
+ "repeated_failure": { "type": "integer" },
245
+ "validation_ratchet": { "type": "integer" },
246
+ "repro_evidence": { "type": "integer" },
247
+ "external_evidence": { "type": "integer" },
248
+ "write_drift": { "type": "integer" },
249
+ "receipt_binding": { "type": "integer" },
250
+ "stale_receipt": { "type": "integer" },
251
+ "plan_mismatch": { "type": "integer" }
252
+ }
253
+ },
254
+ "completionVerdictReceiptBinding": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "required": [
258
+ "plan_bound_count",
259
+ "plan_unbound_count",
260
+ "fingerprint_bound_count",
261
+ "fingerprint_unbound_count",
262
+ "current_state_bound_count",
263
+ "current_state_unavailable_count",
264
+ "stale_count",
265
+ "plan_mismatch_count"
266
+ ],
267
+ "properties": {
268
+ "plan_bound_count": { "type": "integer" },
269
+ "plan_unbound_count": { "type": "integer" },
270
+ "fingerprint_bound_count": { "type": "integer" },
271
+ "fingerprint_unbound_count": { "type": "integer" },
272
+ "current_state_bound_count": { "type": "integer" },
273
+ "current_state_unavailable_count": { "type": "integer" },
274
+ "stale_count": { "type": "integer" },
275
+ "plan_mismatch_count": { "type": "integer" }
276
+ }
277
+ },
123
278
  "evidenceModel": {
124
279
  "type": "object",
125
280
  "additionalProperties": false,
@@ -316,9 +471,9 @@
316
471
  "reported_symptom",
317
472
  "expected_behavior",
318
473
  "observed_behavior",
319
- "original_reproduction",
320
- "evidence_before_fix",
321
- "evidence_after_fix",
474
+ "reproduction_route",
475
+ "before_fix",
476
+ "after_fix",
322
477
  "regression_guard"
323
478
  ],
324
479
  "properties": {
@@ -327,18 +482,80 @@
327
482
  "reported_symptom": { "type": ["string", "null"] },
328
483
  "expected_behavior": { "type": ["string", "null"] },
329
484
  "observed_behavior": { "type": ["string", "null"] },
330
- "original_reproduction": { "$ref": "#/$defs/reproEvidenceItem" },
331
- "evidence_before_fix": { "$ref": "#/$defs/reproEvidenceItem" },
332
- "evidence_after_fix": { "$ref": "#/$defs/reproEvidenceItem" },
333
- "regression_guard": { "$ref": "#/$defs/reproEvidenceItem" }
485
+ "reproduction_route": { "$ref": "#/$defs/reproRouteIdentity" },
486
+ "before_fix": { "$ref": "#/$defs/reproBeforeFixEvidence" },
487
+ "after_fix": { "$ref": "#/$defs/reproAfterFixEvidence" },
488
+ "regression_guard": { "$ref": "#/$defs/reproRegressionGuardEvidence" }
489
+ }
490
+ },
491
+ "reproRouteIdentity": {
492
+ "type": "object",
493
+ "additionalProperties": false,
494
+ "required": ["route_id", "route_kind", "route_digest", "failure_oracle_hash", "steps"],
495
+ "properties": {
496
+ "route_id": { "type": ["string", "null"] },
497
+ "route_kind": { "enum": ["test", "cli", "browser", "api", "manual", "unknown", null] },
498
+ "route_digest": { "type": ["string", "null"] },
499
+ "failure_oracle_hash": { "type": ["string", "null"] },
500
+ "steps": {
501
+ "type": "array",
502
+ "items": { "$ref": "#/$defs/reproRouteStep" }
503
+ }
504
+ }
505
+ },
506
+ "reproRouteStep": {
507
+ "type": "object",
508
+ "additionalProperties": false,
509
+ "required": ["ordinal", "action", "target", "input_digest", "observation_digest", "summary"],
510
+ "properties": {
511
+ "ordinal": { "type": "integer", "minimum": 1 },
512
+ "action": { "type": ["string", "null"] },
513
+ "target": { "type": ["string", "null"] },
514
+ "input_digest": { "type": ["string", "null"] },
515
+ "observation_digest": { "type": ["string", "null"] },
516
+ "summary": { "type": ["string", "null"] }
334
517
  }
335
518
  },
336
- "reproEvidenceItem": {
519
+ "reproBeforeFixEvidence": {
337
520
  "type": "object",
338
521
  "additionalProperties": false,
339
- "required": ["status", "summary", "reason"],
522
+ "required": ["status", "outcome", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
340
523
  "properties": {
341
- "status": { "enum": ["present", "unavailable", "missing"] },
524
+ "status": { "enum": ["reproduced", "unavailable", "missing"] },
525
+ "outcome": { "enum": ["failed_as_expected", "failed_differently", "passed_unexpectedly", null] },
526
+ "receipt_path": { "type": ["string", "null"] },
527
+ "receipt_sha256": { "type": ["string", "null"] },
528
+ "verification_plan_id": { "type": ["string", "null"] },
529
+ "summary": { "type": ["string", "null"] },
530
+ "reason": { "type": ["string", "null"] }
531
+ }
532
+ },
533
+ "reproAfterFixEvidence": {
534
+ "type": "object",
535
+ "additionalProperties": false,
536
+ "required": ["status", "outcome", "same_route_as", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
537
+ "properties": {
538
+ "status": { "enum": ["passed", "failed", "unavailable", "missing"] },
539
+ "outcome": { "enum": ["passed_expected_behavior", "failed_same_route", "failed_differently", null] },
540
+ "same_route_as": { "type": ["string", "null"] },
541
+ "receipt_path": { "type": ["string", "null"] },
542
+ "receipt_sha256": { "type": ["string", "null"] },
543
+ "verification_plan_id": { "type": ["string", "null"] },
544
+ "summary": { "type": ["string", "null"] },
545
+ "reason": { "type": ["string", "null"] }
546
+ }
547
+ },
548
+ "reproRegressionGuardEvidence": {
549
+ "type": "object",
550
+ "additionalProperties": false,
551
+ "required": ["status", "intent", "test_path", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
552
+ "properties": {
553
+ "status": { "enum": ["passed", "failed", "unavailable", "missing"] },
554
+ "intent": { "type": ["string", "null"] },
555
+ "test_path": { "type": ["string", "null"] },
556
+ "receipt_path": { "type": ["string", "null"] },
557
+ "receipt_sha256": { "type": ["string", "null"] },
558
+ "verification_plan_id": { "type": ["string", "null"] },
342
559
  "summary": { "type": ["string", "null"] },
343
560
  "reason": { "type": ["string", "null"] }
344
561
  }
@@ -37,6 +37,18 @@
37
37
  "status": { "enum": ["passed", "partial", "failed", "blocked"] },
38
38
  "completion_verdict": { "$ref": "#/$defs/completionVerdict" },
39
39
  "evidence_model": { "$ref": "#/$defs/evidenceModel" },
40
+ "failure_fingerprint": {
41
+ "anyOf": [
42
+ { "$ref": "#/$defs/failureFingerprint" },
43
+ { "type": "null" }
44
+ ]
45
+ },
46
+ "repeated_failure_summary": {
47
+ "anyOf": [
48
+ { "$ref": "#/$defs/repeatedFailureSummary" },
49
+ { "type": "null" }
50
+ ]
51
+ },
40
52
  "run_dir": { "type": "string" },
41
53
  "manifest_path": { "type": "string" },
42
54
  "summary": {
@@ -100,6 +112,66 @@
100
112
  }
101
113
  },
102
114
  "$defs": {
115
+ "failureFingerprint": {
116
+ "type": "object",
117
+ "additionalProperties": false,
118
+ "required": [
119
+ "schema_version",
120
+ "fingerprint",
121
+ "verification_plan_id",
122
+ "failed_intents_hash",
123
+ "exit_code_classes_hash",
124
+ "timeout_flags_hash",
125
+ "error_kinds_hash",
126
+ "diagnostic_hash",
127
+ "risk_codes_hash",
128
+ "affected_surfaces_hash",
129
+ "command_fingerprints_hash"
130
+ ],
131
+ "properties": {
132
+ "schema_version": { "const": "1" },
133
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
134
+ "verification_plan_id": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
135
+ "failed_intents_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
136
+ "exit_code_classes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
137
+ "timeout_flags_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
138
+ "error_kinds_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
139
+ "diagnostic_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
140
+ "risk_codes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
141
+ "affected_surfaces_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
142
+ "command_fingerprints_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
143
+ }
144
+ },
145
+ "repeatedFailureSummary": {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "required": [
149
+ "schema_version",
150
+ "fingerprint",
151
+ "verification_plan_id",
152
+ "status",
153
+ "failed_intents_hash",
154
+ "risk_codes_hash",
155
+ "affected_surfaces_hash",
156
+ "first_seen_at",
157
+ "last_seen_at",
158
+ "seen_count",
159
+ "requires_new_evidence"
160
+ ],
161
+ "properties": {
162
+ "schema_version": { "const": "1" },
163
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
164
+ "verification_plan_id": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
165
+ "status": { "type": "string" },
166
+ "failed_intents_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
167
+ "risk_codes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
168
+ "affected_surfaces_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
169
+ "first_seen_at": { "type": "string" },
170
+ "last_seen_at": { "type": "string" },
171
+ "seen_count": { "type": "integer", "minimum": 1 },
172
+ "requires_new_evidence": { "type": "boolean" }
173
+ }
174
+ },
103
175
  "completionVerdict": {
104
176
  "type": "object",
105
177
  "additionalProperties": false,
@@ -115,6 +187,7 @@
115
187
  "source",
116
188
  "verification_plan_id",
117
189
  "changed_file_count",
190
+ "criteria",
118
191
  "matched_intents",
119
192
  "ran_intents",
120
193
  "passed_intents",
@@ -126,6 +199,14 @@
126
199
  "scope_diff_risk_count",
127
200
  "repeated_failure_count",
128
201
  "validation_ratchet_risk_count",
202
+ "repro_evidence_risk_count",
203
+ "external_evidence_risk_count",
204
+ "write_drift_risk_count",
205
+ "receipt_binding_risk_count",
206
+ "stale_receipt_count",
207
+ "plan_mismatch_count",
208
+ "risks",
209
+ "receipt_binding",
129
210
  "latest_run_status"
130
211
  ],
131
212
  "properties": {
@@ -135,6 +216,7 @@
135
216
  "pattern": "^sha256:[0-9a-f]{64}$"
136
217
  },
137
218
  "changed_file_count": { "type": ["integer", "null"] },
219
+ "criteria": { "$ref": "#/$defs/completionVerdictCriteria" },
138
220
  "matched_intents": { "type": "integer" },
139
221
  "ran_intents": { "type": "integer" },
140
222
  "passed_intents": { "type": "integer" },
@@ -146,6 +228,14 @@
146
228
  "scope_diff_risk_count": { "type": "integer" },
147
229
  "repeated_failure_count": { "type": "integer" },
148
230
  "validation_ratchet_risk_count": { "type": "integer" },
231
+ "repro_evidence_risk_count": { "type": "integer" },
232
+ "external_evidence_risk_count": { "type": "integer" },
233
+ "write_drift_risk_count": { "type": "integer" },
234
+ "receipt_binding_risk_count": { "type": "integer" },
235
+ "stale_receipt_count": { "type": "integer" },
236
+ "plan_mismatch_count": { "type": "integer" },
237
+ "risks": { "$ref": "#/$defs/completionVerdictRisks" },
238
+ "receipt_binding": { "$ref": "#/$defs/completionVerdictReceiptBinding" },
149
239
  "latest_run_status": { "type": ["string", "null"] }
150
240
  }
151
241
  },
@@ -163,6 +253,71 @@
163
253
  }
164
254
  }
165
255
  },
256
+ "completionVerdictCriteria": {
257
+ "type": "object",
258
+ "additionalProperties": false,
259
+ "required": ["total", "covered", "partially_covered", "uncovered", "blocked", "contradicted"],
260
+ "properties": {
261
+ "total": { "type": "integer" },
262
+ "covered": { "type": "integer" },
263
+ "partially_covered": { "type": "integer" },
264
+ "uncovered": { "type": "integer" },
265
+ "blocked": { "type": "integer" },
266
+ "contradicted": { "type": "integer" }
267
+ }
268
+ },
269
+ "completionVerdictRisks": {
270
+ "type": "object",
271
+ "additionalProperties": false,
272
+ "required": [
273
+ "source_anchor",
274
+ "scope_diff",
275
+ "repeated_failure",
276
+ "validation_ratchet",
277
+ "repro_evidence",
278
+ "external_evidence",
279
+ "write_drift",
280
+ "receipt_binding",
281
+ "stale_receipt",
282
+ "plan_mismatch"
283
+ ],
284
+ "properties": {
285
+ "source_anchor": { "type": "integer" },
286
+ "scope_diff": { "type": "integer" },
287
+ "repeated_failure": { "type": "integer" },
288
+ "validation_ratchet": { "type": "integer" },
289
+ "repro_evidence": { "type": "integer" },
290
+ "external_evidence": { "type": "integer" },
291
+ "write_drift": { "type": "integer" },
292
+ "receipt_binding": { "type": "integer" },
293
+ "stale_receipt": { "type": "integer" },
294
+ "plan_mismatch": { "type": "integer" }
295
+ }
296
+ },
297
+ "completionVerdictReceiptBinding": {
298
+ "type": "object",
299
+ "additionalProperties": false,
300
+ "required": [
301
+ "plan_bound_count",
302
+ "plan_unbound_count",
303
+ "fingerprint_bound_count",
304
+ "fingerprint_unbound_count",
305
+ "current_state_bound_count",
306
+ "current_state_unavailable_count",
307
+ "stale_count",
308
+ "plan_mismatch_count"
309
+ ],
310
+ "properties": {
311
+ "plan_bound_count": { "type": "integer" },
312
+ "plan_unbound_count": { "type": "integer" },
313
+ "fingerprint_bound_count": { "type": "integer" },
314
+ "fingerprint_unbound_count": { "type": "integer" },
315
+ "current_state_bound_count": { "type": "integer" },
316
+ "current_state_unavailable_count": { "type": "integer" },
317
+ "stale_count": { "type": "integer" },
318
+ "plan_mismatch_count": { "type": "integer" }
319
+ }
320
+ },
166
321
  "evidenceModel": {
167
322
  "type": "object",
168
323
  "additionalProperties": false,
@@ -359,9 +514,9 @@
359
514
  "reported_symptom",
360
515
  "expected_behavior",
361
516
  "observed_behavior",
362
- "original_reproduction",
363
- "evidence_before_fix",
364
- "evidence_after_fix",
517
+ "reproduction_route",
518
+ "before_fix",
519
+ "after_fix",
365
520
  "regression_guard"
366
521
  ],
367
522
  "properties": {
@@ -370,18 +525,80 @@
370
525
  "reported_symptom": { "type": ["string", "null"] },
371
526
  "expected_behavior": { "type": ["string", "null"] },
372
527
  "observed_behavior": { "type": ["string", "null"] },
373
- "original_reproduction": { "$ref": "#/$defs/reproEvidenceItem" },
374
- "evidence_before_fix": { "$ref": "#/$defs/reproEvidenceItem" },
375
- "evidence_after_fix": { "$ref": "#/$defs/reproEvidenceItem" },
376
- "regression_guard": { "$ref": "#/$defs/reproEvidenceItem" }
528
+ "reproduction_route": { "$ref": "#/$defs/reproRouteIdentity" },
529
+ "before_fix": { "$ref": "#/$defs/reproBeforeFixEvidence" },
530
+ "after_fix": { "$ref": "#/$defs/reproAfterFixEvidence" },
531
+ "regression_guard": { "$ref": "#/$defs/reproRegressionGuardEvidence" }
532
+ }
533
+ },
534
+ "reproRouteIdentity": {
535
+ "type": "object",
536
+ "additionalProperties": false,
537
+ "required": ["route_id", "route_kind", "route_digest", "failure_oracle_hash", "steps"],
538
+ "properties": {
539
+ "route_id": { "type": ["string", "null"] },
540
+ "route_kind": { "enum": ["test", "cli", "browser", "api", "manual", "unknown", null] },
541
+ "route_digest": { "type": ["string", "null"] },
542
+ "failure_oracle_hash": { "type": ["string", "null"] },
543
+ "steps": {
544
+ "type": "array",
545
+ "items": { "$ref": "#/$defs/reproRouteStep" }
546
+ }
547
+ }
548
+ },
549
+ "reproRouteStep": {
550
+ "type": "object",
551
+ "additionalProperties": false,
552
+ "required": ["ordinal", "action", "target", "input_digest", "observation_digest", "summary"],
553
+ "properties": {
554
+ "ordinal": { "type": "integer", "minimum": 1 },
555
+ "action": { "type": ["string", "null"] },
556
+ "target": { "type": ["string", "null"] },
557
+ "input_digest": { "type": ["string", "null"] },
558
+ "observation_digest": { "type": ["string", "null"] },
559
+ "summary": { "type": ["string", "null"] }
377
560
  }
378
561
  },
379
- "reproEvidenceItem": {
562
+ "reproBeforeFixEvidence": {
380
563
  "type": "object",
381
564
  "additionalProperties": false,
382
- "required": ["status", "summary", "reason"],
565
+ "required": ["status", "outcome", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
383
566
  "properties": {
384
- "status": { "enum": ["present", "unavailable", "missing"] },
567
+ "status": { "enum": ["reproduced", "unavailable", "missing"] },
568
+ "outcome": { "enum": ["failed_as_expected", "failed_differently", "passed_unexpectedly", null] },
569
+ "receipt_path": { "type": ["string", "null"] },
570
+ "receipt_sha256": { "type": ["string", "null"] },
571
+ "verification_plan_id": { "type": ["string", "null"] },
572
+ "summary": { "type": ["string", "null"] },
573
+ "reason": { "type": ["string", "null"] }
574
+ }
575
+ },
576
+ "reproAfterFixEvidence": {
577
+ "type": "object",
578
+ "additionalProperties": false,
579
+ "required": ["status", "outcome", "same_route_as", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
580
+ "properties": {
581
+ "status": { "enum": ["passed", "failed", "unavailable", "missing"] },
582
+ "outcome": { "enum": ["passed_expected_behavior", "failed_same_route", "failed_differently", null] },
583
+ "same_route_as": { "type": ["string", "null"] },
584
+ "receipt_path": { "type": ["string", "null"] },
585
+ "receipt_sha256": { "type": ["string", "null"] },
586
+ "verification_plan_id": { "type": ["string", "null"] },
587
+ "summary": { "type": ["string", "null"] },
588
+ "reason": { "type": ["string", "null"] }
589
+ }
590
+ },
591
+ "reproRegressionGuardEvidence": {
592
+ "type": "object",
593
+ "additionalProperties": false,
594
+ "required": ["status", "intent", "test_path", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
595
+ "properties": {
596
+ "status": { "enum": ["passed", "failed", "unavailable", "missing"] },
597
+ "intent": { "type": ["string", "null"] },
598
+ "test_path": { "type": ["string", "null"] },
599
+ "receipt_path": { "type": ["string", "null"] },
600
+ "receipt_sha256": { "type": ["string", "null"] },
601
+ "verification_plan_id": { "type": ["string", "null"] },
385
602
  "summary": { "type": ["string", "null"] },
386
603
  "reason": { "type": ["string", "null"] }
387
604
  }