mustflow 1.31.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.
Files changed (66) hide show
  1. package/README.md +23 -9
  2. package/dist/cli/commands/classify.js +61 -6
  3. package/dist/cli/commands/contract-lint.js +13 -4
  4. package/dist/cli/commands/dashboard.js +77 -2
  5. package/dist/cli/commands/explain-verify.js +11 -1
  6. package/dist/cli/commands/index.js +14 -0
  7. package/dist/cli/commands/run.js +4 -1
  8. package/dist/cli/commands/verify.js +986 -43
  9. package/dist/cli/i18n/en.js +61 -10
  10. package/dist/cli/i18n/es.js +61 -10
  11. package/dist/cli/i18n/fr.js +61 -10
  12. package/dist/cli/i18n/hi.js +61 -10
  13. package/dist/cli/i18n/ko.js +61 -10
  14. package/dist/cli/i18n/zh.js +61 -10
  15. package/dist/cli/lib/dashboard-export.js +62 -12
  16. package/dist/cli/lib/dashboard-html/client-script.js +1936 -0
  17. package/dist/cli/lib/dashboard-html/locale-bootstrap.js +8 -0
  18. package/dist/cli/lib/dashboard-html/styles.js +572 -0
  19. package/dist/cli/lib/dashboard-html/template.js +134 -0
  20. package/dist/cli/lib/dashboard-html/types.js +1 -0
  21. package/dist/cli/lib/dashboard-html.js +1 -1907
  22. package/dist/cli/lib/dashboard-locale.js +37 -0
  23. package/dist/cli/lib/local-index/constants.js +48 -0
  24. package/dist/cli/lib/local-index/index.js +2951 -0
  25. package/dist/cli/lib/local-index/sql.js +15 -0
  26. package/dist/cli/lib/local-index/types.js +1 -0
  27. package/dist/cli/lib/local-index.js +1 -1911
  28. package/dist/cli/lib/run-plan.js +76 -1
  29. package/dist/cli/lib/templates.js +18 -1
  30. package/dist/cli/lib/validation/command-intents.js +11 -0
  31. package/dist/cli/lib/validation/constants.js +238 -0
  32. package/dist/cli/lib/validation/index.js +1384 -0
  33. package/dist/cli/lib/validation/primitives.js +198 -0
  34. package/dist/cli/lib/validation/test-selection.js +95 -0
  35. package/dist/cli/lib/validation/types.js +1 -0
  36. package/dist/cli/lib/validation.js +1 -1770
  37. package/dist/core/check-issues.js +6 -0
  38. package/dist/core/completion-verdict.js +341 -0
  39. package/dist/core/contract-lint.js +221 -6
  40. package/dist/core/external-evidence.js +9 -0
  41. package/dist/core/public-json-contracts.js +21 -0
  42. package/dist/core/repeated-failure.js +179 -0
  43. package/dist/core/repro-evidence.js +134 -0
  44. package/dist/core/scope-risk.js +64 -0
  45. package/dist/core/skill-route-alignment.js +20 -0
  46. package/dist/core/source-anchor-status.js +4 -1
  47. package/dist/core/test-selection.js +3 -0
  48. package/dist/core/validation-ratchet.js +196 -0
  49. package/dist/core/verification-evidence.js +249 -0
  50. package/examples/README.md +12 -4
  51. package/package.json +3 -3
  52. package/schemas/README.md +13 -3
  53. package/schemas/change-verification-report.schema.json +16 -2
  54. package/schemas/commands.schema.json +4 -0
  55. package/schemas/contract-lint-report.schema.json +29 -0
  56. package/schemas/dashboard-export.schema.json +310 -0
  57. package/schemas/explain-report.schema.json +173 -1
  58. package/schemas/latest-run-pointer.schema.json +601 -0
  59. package/schemas/run-receipt.schema.json +4 -0
  60. package/schemas/test-selection.schema.json +81 -0
  61. package/schemas/verify-report.schema.json +578 -1
  62. package/schemas/verify-run-manifest.schema.json +627 -0
  63. package/templates/default/i18n.toml +1 -1
  64. package/templates/default/locales/en/.mustflow/skills/INDEX.md +124 -29
  65. package/templates/default/locales/en/.mustflow/skills/routes.toml +289 -0
  66. package/templates/default/manifest.toml +29 -2
@@ -0,0 +1,627 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/verify-run-manifest.schema.json",
4
+ "title": "mustflow verify run manifest",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "reason",
11
+ "reasons",
12
+ "plan_source",
13
+ "verification_plan_id",
14
+ "status",
15
+ "completion_verdict",
16
+ "evidence_model",
17
+ "summary",
18
+ "receipts"
19
+ ],
20
+ "properties": {
21
+ "schema_version": { "const": "1" },
22
+ "command": { "const": "verify" },
23
+ "reason": { "type": "string" },
24
+ "reasons": {
25
+ "type": "array",
26
+ "items": { "type": "string" }
27
+ },
28
+ "plan_source": { "type": ["string", "null"] },
29
+ "verification_plan_id": {
30
+ "type": "string",
31
+ "pattern": "^sha256:[0-9a-f]{64}$"
32
+ },
33
+ "status": { "enum": ["passed", "partial", "failed", "blocked"] },
34
+ "completion_verdict": { "$ref": "#/$defs/completionVerdict" },
35
+ "evidence_model": { "$ref": "#/$defs/evidenceModel" },
36
+ "failure_fingerprint": {
37
+ "anyOf": [
38
+ { "$ref": "#/$defs/failureFingerprint" },
39
+ { "type": "null" }
40
+ ]
41
+ },
42
+ "repeated_failure_summary": {
43
+ "anyOf": [
44
+ { "$ref": "#/$defs/repeatedFailureSummary" },
45
+ { "type": "null" }
46
+ ]
47
+ },
48
+ "summary": { "$ref": "#/$defs/summary" },
49
+ "repro_evidence": { "$ref": "#/$defs/reproEvidence" },
50
+ "external_checks": {
51
+ "type": "array",
52
+ "items": { "$ref": "#/$defs/externalCheck" }
53
+ },
54
+ "receipts": {
55
+ "type": "array",
56
+ "items": { "$ref": "#/$defs/receiptEntry" }
57
+ }
58
+ },
59
+ "$defs": {
60
+ "failureFingerprint": {
61
+ "type": "object",
62
+ "additionalProperties": false,
63
+ "required": [
64
+ "schema_version",
65
+ "fingerprint",
66
+ "verification_plan_id",
67
+ "failed_intents_hash",
68
+ "exit_code_classes_hash",
69
+ "timeout_flags_hash",
70
+ "error_kinds_hash",
71
+ "diagnostic_hash",
72
+ "risk_codes_hash",
73
+ "affected_surfaces_hash",
74
+ "command_fingerprints_hash"
75
+ ],
76
+ "properties": {
77
+ "schema_version": { "const": "1" },
78
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
79
+ "verification_plan_id": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
80
+ "failed_intents_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
81
+ "exit_code_classes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
82
+ "timeout_flags_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
83
+ "error_kinds_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
84
+ "diagnostic_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
85
+ "risk_codes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
86
+ "affected_surfaces_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
87
+ "command_fingerprints_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
88
+ }
89
+ },
90
+ "repeatedFailureSummary": {
91
+ "type": "object",
92
+ "additionalProperties": false,
93
+ "required": [
94
+ "schema_version",
95
+ "fingerprint",
96
+ "verification_plan_id",
97
+ "status",
98
+ "failed_intents_hash",
99
+ "risk_codes_hash",
100
+ "affected_surfaces_hash",
101
+ "first_seen_at",
102
+ "last_seen_at",
103
+ "seen_count",
104
+ "requires_new_evidence"
105
+ ],
106
+ "properties": {
107
+ "schema_version": { "const": "1" },
108
+ "fingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
109
+ "verification_plan_id": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
110
+ "status": { "type": "string" },
111
+ "failed_intents_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
112
+ "risk_codes_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
113
+ "affected_surfaces_hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
114
+ "first_seen_at": { "type": "string" },
115
+ "last_seen_at": { "type": "string" },
116
+ "seen_count": { "type": "integer", "minimum": 1 },
117
+ "requires_new_evidence": { "type": "boolean" }
118
+ }
119
+ },
120
+ "completionVerdict": {
121
+ "type": "object",
122
+ "additionalProperties": false,
123
+ "required": ["schema_version", "status", "primary_reason", "evidence", "blockers", "contradictions", "limitations"],
124
+ "properties": {
125
+ "schema_version": { "const": "1" },
126
+ "status": { "enum": ["verified", "partially_verified", "unverified", "blocked", "contradicted"] },
127
+ "primary_reason": { "type": "string" },
128
+ "evidence": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "required": [
132
+ "source",
133
+ "verification_plan_id",
134
+ "changed_file_count",
135
+ "criteria",
136
+ "matched_intents",
137
+ "ran_intents",
138
+ "passed_intents",
139
+ "failed_intents",
140
+ "skipped_intents",
141
+ "receipt_count",
142
+ "gap_count",
143
+ "source_anchor_risk_count",
144
+ "scope_diff_risk_count",
145
+ "repeated_failure_count",
146
+ "validation_ratchet_risk_count",
147
+ "repro_evidence_risk_count",
148
+ "external_evidence_risk_count",
149
+ "write_drift_risk_count",
150
+ "receipt_binding_risk_count",
151
+ "stale_receipt_count",
152
+ "plan_mismatch_count",
153
+ "risks",
154
+ "receipt_binding",
155
+ "latest_run_status"
156
+ ],
157
+ "properties": {
158
+ "source": { "enum": ["mf_verify", "dashboard_export"] },
159
+ "verification_plan_id": {
160
+ "type": ["string", "null"],
161
+ "pattern": "^sha256:[0-9a-f]{64}$"
162
+ },
163
+ "changed_file_count": { "type": ["integer", "null"] },
164
+ "criteria": { "$ref": "#/$defs/completionVerdictCriteria" },
165
+ "matched_intents": { "type": "integer" },
166
+ "ran_intents": { "type": "integer" },
167
+ "passed_intents": { "type": "integer" },
168
+ "failed_intents": { "type": "integer" },
169
+ "skipped_intents": { "type": "integer" },
170
+ "receipt_count": { "type": "integer" },
171
+ "gap_count": { "type": "integer" },
172
+ "source_anchor_risk_count": { "type": "integer" },
173
+ "scope_diff_risk_count": { "type": "integer" },
174
+ "repeated_failure_count": { "type": "integer" },
175
+ "validation_ratchet_risk_count": { "type": "integer" },
176
+ "repro_evidence_risk_count": { "type": "integer" },
177
+ "external_evidence_risk_count": { "type": "integer" },
178
+ "write_drift_risk_count": { "type": "integer" },
179
+ "receipt_binding_risk_count": { "type": "integer" },
180
+ "stale_receipt_count": { "type": "integer" },
181
+ "plan_mismatch_count": { "type": "integer" },
182
+ "risks": { "$ref": "#/$defs/completionVerdictRisks" },
183
+ "receipt_binding": { "$ref": "#/$defs/completionVerdictReceiptBinding" },
184
+ "latest_run_status": { "type": ["string", "null"] }
185
+ }
186
+ },
187
+ "blockers": {
188
+ "type": "array",
189
+ "items": { "type": "string" }
190
+ },
191
+ "contradictions": {
192
+ "type": "array",
193
+ "items": { "type": "string" }
194
+ },
195
+ "limitations": {
196
+ "type": "array",
197
+ "items": { "type": "string" }
198
+ }
199
+ }
200
+ },
201
+ "completionVerdictCriteria": {
202
+ "type": "object",
203
+ "additionalProperties": false,
204
+ "required": ["total", "covered", "partially_covered", "uncovered", "blocked", "contradicted"],
205
+ "properties": {
206
+ "total": { "type": "integer" },
207
+ "covered": { "type": "integer" },
208
+ "partially_covered": { "type": "integer" },
209
+ "uncovered": { "type": "integer" },
210
+ "blocked": { "type": "integer" },
211
+ "contradicted": { "type": "integer" }
212
+ }
213
+ },
214
+ "completionVerdictRisks": {
215
+ "type": "object",
216
+ "additionalProperties": false,
217
+ "required": [
218
+ "source_anchor",
219
+ "scope_diff",
220
+ "repeated_failure",
221
+ "validation_ratchet",
222
+ "repro_evidence",
223
+ "external_evidence",
224
+ "write_drift",
225
+ "receipt_binding",
226
+ "stale_receipt",
227
+ "plan_mismatch"
228
+ ],
229
+ "properties": {
230
+ "source_anchor": { "type": "integer" },
231
+ "scope_diff": { "type": "integer" },
232
+ "repeated_failure": { "type": "integer" },
233
+ "validation_ratchet": { "type": "integer" },
234
+ "repro_evidence": { "type": "integer" },
235
+ "external_evidence": { "type": "integer" },
236
+ "write_drift": { "type": "integer" },
237
+ "receipt_binding": { "type": "integer" },
238
+ "stale_receipt": { "type": "integer" },
239
+ "plan_mismatch": { "type": "integer" }
240
+ }
241
+ },
242
+ "summary": {
243
+ "type": "object",
244
+ "additionalProperties": false,
245
+ "required": ["matched", "ran", "passed", "failed", "skipped"],
246
+ "properties": {
247
+ "matched": { "type": "integer" },
248
+ "ran": { "type": "integer" },
249
+ "passed": { "type": "integer" },
250
+ "failed": { "type": "integer" },
251
+ "skipped": { "type": "integer" }
252
+ }
253
+ },
254
+ "receiptEntry": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "required": [
258
+ "intent",
259
+ "status",
260
+ "skipped",
261
+ "verification_plan_id",
262
+ "receipt_path",
263
+ "receipt_sha256"
264
+ ],
265
+ "properties": {
266
+ "intent": { "type": ["string", "null"] },
267
+ "status": { "enum": ["passed", "failed", "timed_out", "start_failed", "skipped"] },
268
+ "skipped": { "type": "boolean" },
269
+ "verification_plan_id": {
270
+ "type": ["string", "null"],
271
+ "pattern": "^sha256:[0-9a-f]{64}$"
272
+ },
273
+ "receipt_path": { "type": ["string", "null"] },
274
+ "receipt_sha256": {
275
+ "type": ["string", "null"],
276
+ "pattern": "^sha256:[0-9a-f]{64}$"
277
+ }
278
+ }
279
+ },
280
+ "completionVerdictReceiptBinding": {
281
+ "type": "object",
282
+ "additionalProperties": false,
283
+ "required": [
284
+ "plan_bound_count",
285
+ "plan_unbound_count",
286
+ "fingerprint_bound_count",
287
+ "fingerprint_unbound_count",
288
+ "current_state_bound_count",
289
+ "current_state_unavailable_count",
290
+ "stale_count",
291
+ "plan_mismatch_count"
292
+ ],
293
+ "properties": {
294
+ "plan_bound_count": { "type": "integer" },
295
+ "plan_unbound_count": { "type": "integer" },
296
+ "fingerprint_bound_count": { "type": "integer" },
297
+ "fingerprint_unbound_count": { "type": "integer" },
298
+ "current_state_bound_count": { "type": "integer" },
299
+ "current_state_unavailable_count": { "type": "integer" },
300
+ "stale_count": { "type": "integer" },
301
+ "plan_mismatch_count": { "type": "integer" }
302
+ }
303
+ },
304
+ "evidenceModel": {
305
+ "type": "object",
306
+ "additionalProperties": false,
307
+ "required": [
308
+ "schema_version",
309
+ "source",
310
+ "verification_plan_id",
311
+ "requirements",
312
+ "coverage_matrix",
313
+ "receipts",
314
+ "skipped_checks",
315
+ "gaps",
316
+ "remaining_risks",
317
+ "explanation"
318
+ ],
319
+ "properties": {
320
+ "schema_version": { "const": "1" },
321
+ "source": { "enum": ["mf_verify", "dashboard_export"] },
322
+ "verification_plan_id": {
323
+ "type": ["string", "null"],
324
+ "pattern": "^sha256:[0-9a-f]{64}$"
325
+ },
326
+ "requirements": {
327
+ "type": "array",
328
+ "items": { "$ref": "#/$defs/evidenceRequirement" }
329
+ },
330
+ "coverage_matrix": {
331
+ "type": "array",
332
+ "items": { "$ref": "#/$defs/evidenceCoverageCriterion" }
333
+ },
334
+ "receipts": {
335
+ "type": "array",
336
+ "items": { "$ref": "#/$defs/evidenceReceipt" }
337
+ },
338
+ "skipped_checks": {
339
+ "type": "array",
340
+ "items": { "$ref": "#/$defs/evidenceSkippedCheck" }
341
+ },
342
+ "gaps": {
343
+ "type": "array",
344
+ "items": { "$ref": "#/$defs/evidenceGap" }
345
+ },
346
+ "remaining_risks": {
347
+ "type": "array",
348
+ "items": { "$ref": "#/$defs/evidenceRemainingRisk" }
349
+ },
350
+ "repro_evidence": { "$ref": "#/$defs/reproEvidence" },
351
+ "external_checks": {
352
+ "type": "array",
353
+ "items": { "$ref": "#/$defs/externalCheck" }
354
+ },
355
+ "explanation": { "$ref": "#/$defs/evidenceExplanation" }
356
+ }
357
+ },
358
+ "evidenceRequirement": {
359
+ "type": "object",
360
+ "additionalProperties": false,
361
+ "required": [
362
+ "reason",
363
+ "files",
364
+ "surfaces",
365
+ "candidate_intents",
366
+ "selected_intents",
367
+ "skipped_intents",
368
+ "gap_count",
369
+ "outcome"
370
+ ],
371
+ "properties": {
372
+ "reason": { "type": "string" },
373
+ "files": {
374
+ "type": "array",
375
+ "items": { "type": "string" }
376
+ },
377
+ "surfaces": {
378
+ "type": "array",
379
+ "items": { "type": "string" }
380
+ },
381
+ "candidate_intents": {
382
+ "type": "array",
383
+ "items": { "type": "string" }
384
+ },
385
+ "selected_intents": {
386
+ "type": "array",
387
+ "items": { "type": "string" }
388
+ },
389
+ "skipped_intents": {
390
+ "type": "array",
391
+ "items": { "type": "string" }
392
+ },
393
+ "gap_count": { "type": "integer" },
394
+ "outcome": { "enum": ["verified", "partially_verified", "unverified", "blocked", "contradicted"] }
395
+ }
396
+ },
397
+ "evidenceCoverageCriterion": {
398
+ "type": "object",
399
+ "additionalProperties": false,
400
+ "required": ["criterion_id", "source", "statement", "status", "requirement_reason", "evidence"],
401
+ "properties": {
402
+ "criterion_id": { "type": "string" },
403
+ "source": { "enum": ["verification_requirement", "dashboard_snapshot"] },
404
+ "statement": { "type": "string" },
405
+ "status": { "enum": ["covered", "partially_covered", "uncovered", "blocked", "contradicted"] },
406
+ "requirement_reason": { "type": ["string", "null"] },
407
+ "evidence": { "$ref": "#/$defs/evidenceCoverageLinks" }
408
+ }
409
+ },
410
+ "evidenceCoverageLinks": {
411
+ "type": "object",
412
+ "additionalProperties": false,
413
+ "required": ["intents", "receipt_paths", "gap_reasons", "source_anchor_ids"],
414
+ "properties": {
415
+ "intents": {
416
+ "type": "array",
417
+ "items": { "type": "string" }
418
+ },
419
+ "receipt_paths": {
420
+ "type": "array",
421
+ "items": { "type": "string" }
422
+ },
423
+ "gap_reasons": {
424
+ "type": "array",
425
+ "items": { "type": "string" }
426
+ },
427
+ "source_anchor_ids": {
428
+ "type": "array",
429
+ "items": { "type": "string" }
430
+ }
431
+ }
432
+ },
433
+ "evidenceReceipt": {
434
+ "type": "object",
435
+ "additionalProperties": false,
436
+ "required": ["intent", "status", "skipped", "verification_plan_id", "receipt_path", "receipt_sha256"],
437
+ "properties": {
438
+ "intent": { "type": ["string", "null"] },
439
+ "status": { "type": "string" },
440
+ "skipped": { "type": "boolean" },
441
+ "verification_plan_id": {
442
+ "type": ["string", "null"],
443
+ "pattern": "^sha256:[0-9a-f]{64}$"
444
+ },
445
+ "receipt_path": { "type": ["string", "null"] },
446
+ "receipt_sha256": {
447
+ "type": ["string", "null"],
448
+ "pattern": "^sha256:[0-9a-f]{64}$"
449
+ }
450
+ }
451
+ },
452
+ "evidenceSkippedCheck": {
453
+ "type": "object",
454
+ "additionalProperties": false,
455
+ "required": ["intent", "reason", "detail"],
456
+ "properties": {
457
+ "intent": { "type": ["string", "null"] },
458
+ "reason": { "type": ["string", "null"] },
459
+ "detail": { "type": ["string", "null"] }
460
+ }
461
+ },
462
+ "evidenceGap": {
463
+ "type": "object",
464
+ "additionalProperties": false,
465
+ "required": ["reason", "intent", "status", "detail", "files", "surfaces"],
466
+ "properties": {
467
+ "reason": { "type": ["string", "null"] },
468
+ "intent": { "type": ["string", "null"] },
469
+ "status": { "type": ["string", "null"] },
470
+ "detail": { "type": ["string", "null"] },
471
+ "files": {
472
+ "type": "array",
473
+ "items": { "type": "string" }
474
+ },
475
+ "surfaces": {
476
+ "type": "array",
477
+ "items": { "type": "string" }
478
+ }
479
+ }
480
+ },
481
+ "evidenceRemainingRisk": {
482
+ "type": "object",
483
+ "additionalProperties": false,
484
+ "required": ["code", "severity", "detail"],
485
+ "properties": {
486
+ "code": { "type": "string" },
487
+ "severity": { "type": "string" },
488
+ "detail": { "type": "string" }
489
+ }
490
+ },
491
+ "reproEvidence": {
492
+ "type": "object",
493
+ "additionalProperties": false,
494
+ "required": [
495
+ "source",
496
+ "authority",
497
+ "reported_symptom",
498
+ "expected_behavior",
499
+ "observed_behavior",
500
+ "reproduction_route",
501
+ "before_fix",
502
+ "after_fix",
503
+ "regression_guard"
504
+ ],
505
+ "properties": {
506
+ "source": { "const": "repro_first_debug" },
507
+ "authority": { "const": "claim_evidence" },
508
+ "reported_symptom": { "type": ["string", "null"] },
509
+ "expected_behavior": { "type": ["string", "null"] },
510
+ "observed_behavior": { "type": ["string", "null"] },
511
+ "reproduction_route": { "$ref": "#/$defs/reproRouteIdentity" },
512
+ "before_fix": { "$ref": "#/$defs/reproBeforeFixEvidence" },
513
+ "after_fix": { "$ref": "#/$defs/reproAfterFixEvidence" },
514
+ "regression_guard": { "$ref": "#/$defs/reproRegressionGuardEvidence" }
515
+ }
516
+ },
517
+ "reproRouteIdentity": {
518
+ "type": "object",
519
+ "additionalProperties": false,
520
+ "required": ["route_id", "route_kind", "route_digest", "failure_oracle_hash", "steps"],
521
+ "properties": {
522
+ "route_id": { "type": ["string", "null"] },
523
+ "route_kind": { "enum": ["test", "cli", "browser", "api", "manual", "unknown", null] },
524
+ "route_digest": { "type": ["string", "null"] },
525
+ "failure_oracle_hash": { "type": ["string", "null"] },
526
+ "steps": {
527
+ "type": "array",
528
+ "items": { "$ref": "#/$defs/reproRouteStep" }
529
+ }
530
+ }
531
+ },
532
+ "reproRouteStep": {
533
+ "type": "object",
534
+ "additionalProperties": false,
535
+ "required": ["ordinal", "action", "target", "input_digest", "observation_digest", "summary"],
536
+ "properties": {
537
+ "ordinal": { "type": "integer", "minimum": 1 },
538
+ "action": { "type": ["string", "null"] },
539
+ "target": { "type": ["string", "null"] },
540
+ "input_digest": { "type": ["string", "null"] },
541
+ "observation_digest": { "type": ["string", "null"] },
542
+ "summary": { "type": ["string", "null"] }
543
+ }
544
+ },
545
+ "reproBeforeFixEvidence": {
546
+ "type": "object",
547
+ "additionalProperties": false,
548
+ "required": ["status", "outcome", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
549
+ "properties": {
550
+ "status": { "enum": ["reproduced", "unavailable", "missing"] },
551
+ "outcome": { "enum": ["failed_as_expected", "failed_differently", "passed_unexpectedly", null] },
552
+ "receipt_path": { "type": ["string", "null"] },
553
+ "receipt_sha256": { "type": ["string", "null"] },
554
+ "verification_plan_id": { "type": ["string", "null"] },
555
+ "summary": { "type": ["string", "null"] },
556
+ "reason": { "type": ["string", "null"] }
557
+ }
558
+ },
559
+ "reproAfterFixEvidence": {
560
+ "type": "object",
561
+ "additionalProperties": false,
562
+ "required": ["status", "outcome", "same_route_as", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
563
+ "properties": {
564
+ "status": { "enum": ["passed", "failed", "unavailable", "missing"] },
565
+ "outcome": { "enum": ["passed_expected_behavior", "failed_same_route", "failed_differently", null] },
566
+ "same_route_as": { "type": ["string", "null"] },
567
+ "receipt_path": { "type": ["string", "null"] },
568
+ "receipt_sha256": { "type": ["string", "null"] },
569
+ "verification_plan_id": { "type": ["string", "null"] },
570
+ "summary": { "type": ["string", "null"] },
571
+ "reason": { "type": ["string", "null"] }
572
+ }
573
+ },
574
+ "reproRegressionGuardEvidence": {
575
+ "type": "object",
576
+ "additionalProperties": false,
577
+ "required": ["status", "intent", "test_path", "receipt_path", "receipt_sha256", "verification_plan_id", "summary", "reason"],
578
+ "properties": {
579
+ "status": { "enum": ["passed", "failed", "unavailable", "missing"] },
580
+ "intent": { "type": ["string", "null"] },
581
+ "test_path": { "type": ["string", "null"] },
582
+ "receipt_path": { "type": ["string", "null"] },
583
+ "receipt_sha256": { "type": ["string", "null"] },
584
+ "verification_plan_id": { "type": ["string", "null"] },
585
+ "summary": { "type": ["string", "null"] },
586
+ "reason": { "type": ["string", "null"] }
587
+ }
588
+ },
589
+ "externalCheck": {
590
+ "type": "object",
591
+ "additionalProperties": false,
592
+ "required": ["source", "authority", "provider", "name", "status", "url", "summary"],
593
+ "properties": {
594
+ "source": { "const": "external_ci" },
595
+ "authority": { "const": "supporting_only" },
596
+ "provider": { "type": "string", "minLength": 1 },
597
+ "name": { "type": "string", "minLength": 1 },
598
+ "status": { "enum": ["passed", "failed", "cancelled", "unknown"] },
599
+ "url": { "type": ["string", "null"] },
600
+ "summary": { "type": ["string", "null"] }
601
+ }
602
+ },
603
+ "evidenceExplanation": {
604
+ "type": "object",
605
+ "additionalProperties": false,
606
+ "required": ["verified_by", "downgraded_by", "blocked_by", "contradicted_by"],
607
+ "properties": {
608
+ "verified_by": {
609
+ "type": "array",
610
+ "items": { "type": "string" }
611
+ },
612
+ "downgraded_by": {
613
+ "type": "array",
614
+ "items": { "type": "string" }
615
+ },
616
+ "blocked_by": {
617
+ "type": "array",
618
+ "items": { "type": "string" }
619
+ },
620
+ "contradicted_by": {
621
+ "type": "array",
622
+ "items": { "type": "string" }
623
+ }
624
+ }
625
+ }
626
+ }
627
+ }
@@ -56,7 +56,7 @@ translations = {}
56
56
  [documents."skills.index"]
57
57
  source = "locales/en/.mustflow/skills/INDEX.md"
58
58
  source_locale = "en"
59
- revision = 50
59
+ revision = 54
60
60
  translations = {}
61
61
 
62
62
  [documents."skill.adapter-boundary"]