mustflow 1.30.0 → 1.31.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 (44) hide show
  1. package/README.md +12 -2
  2. package/dist/cli/commands/run.js +221 -48
  3. package/dist/cli/commands/upgrade.js +65 -0
  4. package/dist/cli/commands/verify.js +79 -7
  5. package/dist/cli/i18n/en.js +12 -0
  6. package/dist/cli/i18n/es.js +12 -0
  7. package/dist/cli/i18n/fr.js +12 -0
  8. package/dist/cli/i18n/hi.js +12 -0
  9. package/dist/cli/i18n/ko.js +12 -0
  10. package/dist/cli/i18n/zh.js +12 -0
  11. package/dist/cli/index.js +27 -46
  12. package/dist/cli/lib/command-registry.js +5 -0
  13. package/dist/cli/lib/dashboard-html.js +1 -1
  14. package/dist/cli/lib/local-index.js +11 -8
  15. package/dist/cli/lib/reporter.js +6 -0
  16. package/dist/cli/lib/run-plan.js +20 -3
  17. package/dist/cli/lib/validation.js +110 -1
  18. package/dist/core/bounded-output.js +38 -0
  19. package/dist/core/change-classification.js +6 -2
  20. package/dist/core/change-verification.js +240 -6
  21. package/dist/core/check-issues.js +6 -0
  22. package/dist/core/command-contract-validation.js +20 -0
  23. package/dist/core/command-effects.js +13 -0
  24. package/dist/core/contract-lint.js +95 -1
  25. package/dist/core/dashboard-verification.js +8 -0
  26. package/dist/core/public-json-contracts.js +7 -0
  27. package/dist/core/run-performance-history.js +307 -0
  28. package/dist/core/run-profile.js +87 -0
  29. package/dist/core/run-receipt.js +171 -4
  30. package/dist/core/run-write-drift.js +18 -2
  31. package/dist/core/skill-route-alignment.js +90 -0
  32. package/dist/core/test-selection.js +224 -0
  33. package/dist/core/verification-decision-graph.js +67 -0
  34. package/dist/core/verification-scheduler.js +96 -2
  35. package/package.json +1 -1
  36. package/schemas/README.md +6 -2
  37. package/schemas/change-verification-report.schema.json +153 -3
  38. package/schemas/commands.schema.json +47 -1
  39. package/schemas/contract-lint-report.schema.json +51 -0
  40. package/schemas/dashboard-export.schema.json +273 -0
  41. package/schemas/explain-report.schema.json +2 -0
  42. package/schemas/run-receipt.schema.json +109 -0
  43. package/templates/default/common/.mustflow/config/commands.toml +1 -1
  44. package/templates/default/manifest.toml +1 -1
@@ -67,6 +67,7 @@
67
67
  "stdout": { "$ref": "#/$defs/output" },
68
68
  "stderr": { "$ref": "#/$defs/output" },
69
69
  "write_drift": { "$ref": "#/$defs/writeDrift" },
70
+ "performance": { "$ref": "#/$defs/performance" },
70
71
  "redaction": { "$ref": "#/$defs/redaction" },
71
72
  "receipt_path": { "type": "string" }
72
73
  },
@@ -87,6 +88,114 @@
87
88
  }
88
89
  }
89
90
  },
91
+ "performance": {
92
+ "type": "object",
93
+ "additionalProperties": false,
94
+ "required": [
95
+ "schema_version",
96
+ "measurement",
97
+ "duration_ms",
98
+ "timeout_ratio",
99
+ "command_fingerprint",
100
+ "intent_fingerprint",
101
+ "contract_fingerprint",
102
+ "runner",
103
+ "output_summary",
104
+ "result_summary",
105
+ "quality"
106
+ ],
107
+ "properties": {
108
+ "schema_version": { "const": "1" },
109
+ "measurement": { "const": "wall_clock" },
110
+ "duration_ms": { "type": "integer", "minimum": 0 },
111
+ "executor_overhead_ms": { "type": "number", "minimum": 0 },
112
+ "phases": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": ["name", "duration_ms"],
118
+ "properties": {
119
+ "name": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$" },
120
+ "duration_ms": { "type": "number", "minimum": 0 }
121
+ }
122
+ }
123
+ },
124
+ "selection": {
125
+ "type": "object",
126
+ "additionalProperties": false,
127
+ "required": [
128
+ "strategy",
129
+ "changed_file_count",
130
+ "changed_surface_counts",
131
+ "selected_target_count",
132
+ "fallback_used"
133
+ ],
134
+ "properties": {
135
+ "strategy": { "type": "string", "pattern": "^[a-z][a-z0-9_]*$" },
136
+ "changed_file_count": { "type": "integer", "minimum": 0 },
137
+ "changed_surface_counts": {
138
+ "type": "object",
139
+ "additionalProperties": {
140
+ "type": "integer",
141
+ "minimum": 0
142
+ },
143
+ "propertyNames": { "pattern": "^[a-z][a-z0-9_]*$" }
144
+ },
145
+ "selected_target_count": { "type": "integer", "minimum": 0 },
146
+ "fallback_used": { "type": "boolean" }
147
+ }
148
+ },
149
+ "timeout_ratio": { "type": "number", "minimum": 0 },
150
+ "command_fingerprint": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
151
+ "intent_fingerprint": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
152
+ "contract_fingerprint": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
153
+ "runner": {
154
+ "type": "object",
155
+ "additionalProperties": false,
156
+ "required": ["kind", "platform_family", "arch_family", "runtime", "runtime_major"],
157
+ "properties": {
158
+ "kind": { "const": "local" },
159
+ "platform_family": { "type": "string" },
160
+ "arch_family": { "type": "string" },
161
+ "runtime": { "enum": ["node", "bun"] },
162
+ "runtime_major": { "type": "integer", "minimum": 0 }
163
+ }
164
+ },
165
+ "output_summary": {
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": ["stdout_bytes", "stderr_bytes", "stdout_truncated", "stderr_truncated"],
169
+ "properties": {
170
+ "stdout_bytes": { "type": "integer", "minimum": 0 },
171
+ "stderr_bytes": { "type": "integer", "minimum": 0 },
172
+ "stdout_truncated": { "type": "boolean" },
173
+ "stderr_truncated": { "type": "boolean" }
174
+ }
175
+ },
176
+ "result_summary": {
177
+ "type": "object",
178
+ "additionalProperties": false,
179
+ "required": ["status", "exit_code_class", "timed_out", "error_kind"],
180
+ "properties": {
181
+ "status": { "enum": ["passed", "failed", "timed_out", "start_failed"] },
182
+ "exit_code_class": { "enum": ["success", "failure", "no_exit_code"] },
183
+ "timed_out": { "type": "boolean" },
184
+ "error_kind": { "enum": ["timeout", "start_failed", "exit_code", null] }
185
+ }
186
+ },
187
+ "quality": {
188
+ "type": "object",
189
+ "additionalProperties": false,
190
+ "required": ["phase_timings_source", "target_timings_source", "usable_for_history"],
191
+ "properties": {
192
+ "phase_timings_source": { "enum": ["none", "structured_report"] },
193
+ "target_timings_source": { "const": "none" },
194
+ "usable_for_history": { "type": "boolean" }
195
+ }
196
+ }
197
+ }
198
+ },
90
199
  "redaction": {
91
200
  "type": "object",
92
201
  "additionalProperties": false,
@@ -38,7 +38,7 @@ status = "unknown"
38
38
  description = "Run the fast test baseline."
39
39
  reason = "This repository has not declared its fast-test command yet."
40
40
  agent_action = "do_not_guess_report_missing"
41
- required_after = ["low_risk_code_change", "copy_change", "i18n_change"]
41
+ required_after = ["low_risk_code_change", "copy_change", "i18n_change", "unknown_change"]
42
42
 
43
43
  [intents.test_coverage]
44
44
  status = "manual_only"
@@ -1,6 +1,6 @@
1
1
  id = "default"
2
2
  name = "default"
3
- version = "1.30.0"
3
+ version = "1.31.0"
4
4
  description = "Minimal workflow for LLM agents to read, edit, and verify their work in a repository."
5
5
  common_root = "common"
6
6
  locales_root = "locales"