@claudexor/schema 3.0.4 → 3.1.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 (133) hide show
  1. package/dist/agent-capabilities.d.ts +37 -0
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +14 -0
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts +384 -18
  6. package/dist/apply-eligibility.d.ts.map +1 -1
  7. package/dist/apply-eligibility.js +20 -1
  8. package/dist/apply-eligibility.js.map +1 -1
  9. package/dist/budget.d.ts +75 -0
  10. package/dist/budget.d.ts.map +1 -1
  11. package/dist/budget.js +46 -0
  12. package/dist/budget.js.map +1 -1
  13. package/dist/config.d.ts +41 -41
  14. package/dist/control-operation-responses.d.ts +287 -65
  15. package/dist/control-operation-responses.d.ts.map +1 -1
  16. package/dist/control-operation-responses.js +33 -3
  17. package/dist/control-operation-responses.js.map +1 -1
  18. package/dist/control-run-detail.d.ts +600 -150
  19. package/dist/control-run-detail.d.ts.map +1 -1
  20. package/dist/control-run-detail.js +28 -2
  21. package/dist/control-run-detail.js.map +1 -1
  22. package/dist/control-run-retry.d.ts +1 -1
  23. package/dist/control-run-scope.d.ts +1 -1
  24. package/dist/control-thread-apply.d.ts +10 -0
  25. package/dist/control-thread-apply.d.ts.map +1 -1
  26. package/dist/control.d.ts +664 -156
  27. package/dist/control.d.ts.map +1 -1
  28. package/dist/control.js +76 -2
  29. package/dist/control.js.map +1 -1
  30. package/dist/decision.d.ts +205 -9
  31. package/dist/decision.d.ts.map +1 -1
  32. package/dist/decision.js +69 -1
  33. package/dist/decision.js.map +1 -1
  34. package/dist/deep-scan.d.ts +27 -0
  35. package/dist/deep-scan.d.ts.map +1 -0
  36. package/dist/deep-scan.js +27 -0
  37. package/dist/deep-scan.js.map +1 -0
  38. package/dist/delivery.d.ts +13 -0
  39. package/dist/delivery.d.ts.map +1 -1
  40. package/dist/delivery.js +15 -0
  41. package/dist/delivery.js.map +1 -1
  42. package/dist/events.d.ts +59 -4
  43. package/dist/events.d.ts.map +1 -1
  44. package/dist/events.js +85 -0
  45. package/dist/events.js.map +1 -1
  46. package/dist/harness.d.ts +111 -3
  47. package/dist/harness.d.ts.map +1 -1
  48. package/dist/harness.js +77 -1
  49. package/dist/harness.js.map +1 -1
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +3 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/operation.d.ts +193 -10
  55. package/dist/operation.d.ts.map +1 -1
  56. package/dist/operation.js +45 -0
  57. package/dist/operation.js.map +1 -1
  58. package/dist/output-schema-dialect.d.ts +22 -0
  59. package/dist/output-schema-dialect.d.ts.map +1 -0
  60. package/dist/output-schema-dialect.js +37 -0
  61. package/dist/output-schema-dialect.js.map +1 -0
  62. package/dist/output-schema.d.ts +26 -2
  63. package/dist/output-schema.d.ts.map +1 -1
  64. package/dist/output-schema.js +313 -16
  65. package/dist/output-schema.js.map +1 -1
  66. package/dist/plan.d.ts +2 -2
  67. package/dist/problem.d.ts +3 -3
  68. package/dist/project.d.ts +47 -12
  69. package/dist/project.d.ts.map +1 -1
  70. package/dist/project.js +32 -0
  71. package/dist/project.js.map +1 -1
  72. package/dist/readiness.d.ts +14 -0
  73. package/dist/readiness.d.ts.map +1 -1
  74. package/dist/recovery.d.ts +14 -14
  75. package/dist/review.d.ts +7 -7
  76. package/dist/route.d.ts +2 -2
  77. package/dist/setup.d.ts +288 -94
  78. package/dist/setup.d.ts.map +1 -1
  79. package/dist/setup.js +90 -6
  80. package/dist/setup.js.map +1 -1
  81. package/dist/status-projection.d.ts +79 -4
  82. package/dist/status-projection.d.ts.map +1 -1
  83. package/dist/status-projection.js +161 -4
  84. package/dist/status-projection.js.map +1 -1
  85. package/dist/task.d.ts +14 -0
  86. package/dist/task.d.ts.map +1 -1
  87. package/dist/task.js +9 -0
  88. package/dist/task.js.map +1 -1
  89. package/dist/telemetry.d.ts +779 -16
  90. package/dist/telemetry.d.ts.map +1 -1
  91. package/dist/telemetry.js +177 -4
  92. package/dist/telemetry.js.map +1 -1
  93. package/dist/tool-ref.d.ts +14 -0
  94. package/dist/tool-ref.d.ts.map +1 -1
  95. package/dist/tool-ref.js +15 -0
  96. package/dist/tool-ref.js.map +1 -1
  97. package/dist/work-report.d.ts +131 -0
  98. package/dist/work-report.d.ts.map +1 -0
  99. package/dist/work-report.js +124 -0
  100. package/dist/work-report.js.map +1 -0
  101. package/dist/workspace.d.ts +2 -2
  102. package/generated/AgentCapabilityCatalog.schema.json +35 -0
  103. package/generated/ControlApplyCheckResponse.schema.json +5 -0
  104. package/generated/ControlDeliveryResponse.schema.json +14 -0
  105. package/generated/ControlHarnessListResponse.schema.json +19 -0
  106. package/generated/ControlOperationCatalog.schema.json +74 -0
  107. package/generated/ControlOperationDescriptor.schema.json +74 -0
  108. package/generated/ControlOperationParameter.schema.json +75 -0
  109. package/generated/ControlProjectRemoveReceipt.schema.json +58 -0
  110. package/generated/ControlRunAgainDraft.schema.json +11 -0
  111. package/generated/ControlRunDetail.schema.json +403 -9
  112. package/generated/ControlRunListResponse.schema.json +229 -3
  113. package/generated/ControlRunStartRequest.schema.json +11 -0
  114. package/generated/ControlRunSummary.schema.json +215 -2
  115. package/generated/ControlSetupJobCreateRequest.schema.json +2 -1
  116. package/generated/ControlSetupJobEvent.schema.json +28 -0
  117. package/generated/ControlSetupJobSnapshot.schema.json +28 -0
  118. package/generated/ControlThreadApplyResponse.schema.json +14 -0
  119. package/generated/ControlThreadDetail.schema.json +94 -1
  120. package/generated/ControlThreadTurnRequest.schema.json +11 -0
  121. package/generated/DecisionRecord.schema.json +178 -2
  122. package/generated/HarnessEvent.schema.json +79 -1
  123. package/generated/HarnessManifest.schema.json +19 -0
  124. package/generated/HarnessStatusDto.schema.json +19 -0
  125. package/generated/McpRunHandleResult.schema.json +286 -1
  126. package/generated/McpRunToolResult.schema.json +171 -1
  127. package/generated/RoutePoolDegradedPayload.schema.json +79 -0
  128. package/generated/RunEvent.schema.json +7 -1
  129. package/generated/RunFailure.schema.json +23 -1
  130. package/generated/RunTelemetry.schema.json +376 -1
  131. package/generated/StructuredOutputConformance.schema.json +83 -0
  132. package/generated/TaskContract.schema.json +16 -0
  133. package/package.json +2 -2
@@ -109,7 +109,11 @@
109
109
  "stuck_no_progress",
110
110
  "wall_clock_exceeded",
111
111
  "user_cancelled",
112
- "crash_interrupted"
112
+ "crash_interrupted",
113
+ "input_required",
114
+ "work_incomplete",
115
+ "context_capacity_exhausted",
116
+ "work_report_contract"
113
117
  ],
114
118
  "description": "Typed reason qualifying a non-clean terminal; null on a clean success."
115
119
  },
@@ -119,6 +123,82 @@
119
123
  ],
120
124
  "description": "Typed reason qualifying a non-clean terminal; null on a clean success.",
121
125
  "default": null
126
+ },
127
+ "work_state": {
128
+ "type": "object",
129
+ "properties": {
130
+ "state": {
131
+ "type": "string",
132
+ "enum": [
133
+ "completed",
134
+ "needs_input",
135
+ "incomplete",
136
+ "unverified"
137
+ ],
138
+ "description": "Folded work state: the WorkReport state, or unverified when no report was obtainable (transport unsupported / lane gated)."
139
+ },
140
+ "source": {
141
+ "type": "string",
142
+ "enum": [
143
+ "constrained",
144
+ "validated",
145
+ "absent"
146
+ ],
147
+ "description": "Provenance of a WorkReport: constrained (native schema transport), validated (whole-answer JSON), or absent (no transport could carry one — a disclosed absence, not a failure)."
148
+ },
149
+ "required_inputs": {
150
+ "type": "array",
151
+ "items": {
152
+ "type": "object",
153
+ "properties": {
154
+ "kind": {
155
+ "type": "string",
156
+ "enum": [
157
+ "file",
158
+ "context",
159
+ "credential",
160
+ "permission",
161
+ "decision",
162
+ "external_dependency"
163
+ ],
164
+ "description": "Category of a missing input a needs_input/incomplete report lists: a file, additional context, a credential, a permission, a human decision, or an external dependency."
165
+ },
166
+ "locator": {
167
+ "anyOf": [
168
+ {
169
+ "type": "string",
170
+ "maxLength": 512
171
+ },
172
+ {
173
+ "type": "null"
174
+ }
175
+ ],
176
+ "default": null,
177
+ "description": "Concrete pointer to the missing thing (path/url/name); null when unnameable."
178
+ },
179
+ "description": {
180
+ "type": "string",
181
+ "maxLength": 1024,
182
+ "description": "Human-readable description of what is needed and why."
183
+ }
184
+ },
185
+ "required": [
186
+ "kind",
187
+ "description"
188
+ ],
189
+ "additionalProperties": false,
190
+ "description": "One blocking input a needs_input/incomplete WorkReport lists."
191
+ },
192
+ "maxItems": 16,
193
+ "description": "Carried through from a needs_input/incomplete WorkReport for honest disclosure."
194
+ }
195
+ },
196
+ "required": [
197
+ "state",
198
+ "source"
199
+ ],
200
+ "additionalProperties": false,
201
+ "description": "D-16 model-attested work outcome, orthogonal to lifecycle; a needs_input/incomplete state vetoes applyability and exit 0. Absent on runs with no work_report transport."
122
202
  }
123
203
  },
124
204
  "required": [
@@ -221,6 +301,211 @@
221
301
  ],
222
302
  "description": "Derived plan readiness (plan runs only, D17); null otherwise.",
223
303
  "default": null
304
+ },
305
+ "council": {
306
+ "anyOf": [
307
+ {
308
+ "type": "object",
309
+ "properties": {
310
+ "requested": {
311
+ "type": "integer",
312
+ "exclusiveMinimum": 0,
313
+ "description": "Requested member count (n; 2..4)."
314
+ },
315
+ "drafted": {
316
+ "type": "integer",
317
+ "minimum": 0,
318
+ "description": "Members whose draft survived to the merge."
319
+ },
320
+ "degraded": {
321
+ "type": "boolean",
322
+ "default": false,
323
+ "description": "True when fewer members drafted than requested (failures disclosed per member)."
324
+ },
325
+ "mergedBy": {
326
+ "type": [
327
+ "string",
328
+ "null"
329
+ ],
330
+ "default": null,
331
+ "description": "Harness that produced the unified plan (the primary); null if the merge failed."
332
+ },
333
+ "members": {
334
+ "type": "array",
335
+ "items": {
336
+ "type": "object",
337
+ "properties": {
338
+ "harnessId": {
339
+ "type": "string",
340
+ "minLength": 1,
341
+ "description": "Harness that drafted (or merged) this member's plan."
342
+ },
343
+ "role": {
344
+ "type": "string",
345
+ "enum": [
346
+ "primary",
347
+ "member"
348
+ ],
349
+ "description": "primary = the merger that synthesizes the unified plan; member = draft only."
350
+ },
351
+ "status": {
352
+ "type": "string",
353
+ "enum": [
354
+ "drafted",
355
+ "failed",
356
+ "merged"
357
+ ],
358
+ "description": "drafted = draft landed; merged = this member produced the unified plan; failed."
359
+ },
360
+ "error": {
361
+ "type": [
362
+ "string",
363
+ "null"
364
+ ],
365
+ "default": null,
366
+ "description": "First redacted draft error; null unless the member failed."
367
+ }
368
+ },
369
+ "required": [
370
+ "harnessId",
371
+ "role",
372
+ "status"
373
+ ],
374
+ "additionalProperties": false,
375
+ "description": "One council member's role and draft/merge outcome."
376
+ },
377
+ "default": [],
378
+ "description": "Per-member role and outcome."
379
+ }
380
+ },
381
+ "required": [
382
+ "requested",
383
+ "drafted"
384
+ ],
385
+ "additionalProperties": false,
386
+ "description": "Council membership + merge disclosure for a --council plan run."
387
+ },
388
+ {
389
+ "type": "null"
390
+ }
391
+ ],
392
+ "description": "Council membership + merge disclosure (QA-023b); null for solo/non-plan runs.",
393
+ "default": null
394
+ },
395
+ "budget": {
396
+ "anyOf": [
397
+ {
398
+ "type": "object",
399
+ "properties": {
400
+ "paidBudget": {
401
+ "anyOf": [
402
+ {
403
+ "type": "object",
404
+ "properties": {
405
+ "kind": {
406
+ "type": "string",
407
+ "const": "unlimited"
408
+ }
409
+ },
410
+ "required": [
411
+ "kind"
412
+ ],
413
+ "additionalProperties": false
414
+ },
415
+ {
416
+ "type": "object",
417
+ "properties": {
418
+ "kind": {
419
+ "type": "string",
420
+ "const": "finite"
421
+ },
422
+ "maxUsd": {
423
+ "type": "number",
424
+ "minimum": 0
425
+ }
426
+ },
427
+ "required": [
428
+ "kind",
429
+ "maxUsd"
430
+ ],
431
+ "additionalProperties": false
432
+ }
433
+ ],
434
+ "description": "Incremental-cash budget: explicitly unlimited or a finite non-negative USD cap.",
435
+ "default": {
436
+ "kind": "unlimited"
437
+ }
438
+ },
439
+ "spendUsd": {
440
+ "type": [
441
+ "number",
442
+ "null"
443
+ ],
444
+ "default": null,
445
+ "description": "CASH spend so far in USD; null when unknown."
446
+ },
447
+ "valuationUsd": {
448
+ "type": [
449
+ "number",
450
+ "null"
451
+ ],
452
+ "default": null,
453
+ "description": "Subscription valuation in USD (separate from billed cash); null when unknown — never a fabricated $0 (QA-023c)."
454
+ },
455
+ "valuationKnowledge": {
456
+ "type": "string",
457
+ "enum": [
458
+ "exact",
459
+ "estimated",
460
+ "unknown"
461
+ ],
462
+ "default": "unknown",
463
+ "description": "Confidence of valuationUsd: 'estimated' when token-derived, 'unknown' when no usage was reported (valuationUsd is then null), 'exact' when natively priced."
464
+ },
465
+ "remainingUsd": {
466
+ "type": [
467
+ "number",
468
+ "null"
469
+ ],
470
+ "default": null,
471
+ "description": "Remaining budget in USD; null when no cap or unknown spend."
472
+ },
473
+ "estimated": {
474
+ "type": "boolean",
475
+ "default": false,
476
+ "description": "True when spend is token-derived rather than natively reported."
477
+ },
478
+ "source": {
479
+ "type": "string",
480
+ "enum": [
481
+ "decision",
482
+ "events",
483
+ "settings",
484
+ "unknown"
485
+ ],
486
+ "default": "unknown",
487
+ "description": "Where the snapshot came from: the decision record, live events, settings, or unknown."
488
+ },
489
+ "evidence": {
490
+ "type": "string",
491
+ "enum": [
492
+ "complete",
493
+ "incomplete",
494
+ "unavailable"
495
+ ],
496
+ "description": "Integrity of the canonical events this spend fallback read: 'incomplete' when malformed/non-object event lines were skipped, 'unavailable' when the events file was unreadable, else 'complete'. A non-complete value means the projected spend may disagree with disk truth.",
497
+ "default": "complete"
498
+ }
499
+ },
500
+ "additionalProperties": false,
501
+ "description": "Budget snapshot for a run: cap, spend, and provenance."
502
+ },
503
+ {
504
+ "type": "null"
505
+ }
506
+ ],
507
+ "description": "Run budget snapshot (cash + subscription valuation, QA-023c); null when unavailable.",
508
+ "default": null
224
509
  }
225
510
  },
226
511
  "required": [
@@ -85,7 +85,11 @@
85
85
  "stuck_no_progress",
86
86
  "wall_clock_exceeded",
87
87
  "user_cancelled",
88
- "crash_interrupted"
88
+ "crash_interrupted",
89
+ "input_required",
90
+ "work_incomplete",
91
+ "context_capacity_exhausted",
92
+ "work_report_contract"
89
93
  ],
90
94
  "description": "Typed reason qualifying a non-clean terminal; null on a clean success."
91
95
  },
@@ -95,6 +99,82 @@
95
99
  ],
96
100
  "description": "Typed reason qualifying a non-clean terminal; null on a clean success.",
97
101
  "default": null
102
+ },
103
+ "work_state": {
104
+ "type": "object",
105
+ "properties": {
106
+ "state": {
107
+ "type": "string",
108
+ "enum": [
109
+ "completed",
110
+ "needs_input",
111
+ "incomplete",
112
+ "unverified"
113
+ ],
114
+ "description": "Folded work state: the WorkReport state, or unverified when no report was obtainable (transport unsupported / lane gated)."
115
+ },
116
+ "source": {
117
+ "type": "string",
118
+ "enum": [
119
+ "constrained",
120
+ "validated",
121
+ "absent"
122
+ ],
123
+ "description": "Provenance of a WorkReport: constrained (native schema transport), validated (whole-answer JSON), or absent (no transport could carry one — a disclosed absence, not a failure)."
124
+ },
125
+ "required_inputs": {
126
+ "type": "array",
127
+ "items": {
128
+ "type": "object",
129
+ "properties": {
130
+ "kind": {
131
+ "type": "string",
132
+ "enum": [
133
+ "file",
134
+ "context",
135
+ "credential",
136
+ "permission",
137
+ "decision",
138
+ "external_dependency"
139
+ ],
140
+ "description": "Category of a missing input a needs_input/incomplete report lists: a file, additional context, a credential, a permission, a human decision, or an external dependency."
141
+ },
142
+ "locator": {
143
+ "anyOf": [
144
+ {
145
+ "type": "string",
146
+ "maxLength": 512
147
+ },
148
+ {
149
+ "type": "null"
150
+ }
151
+ ],
152
+ "default": null,
153
+ "description": "Concrete pointer to the missing thing (path/url/name); null when unnameable."
154
+ },
155
+ "description": {
156
+ "type": "string",
157
+ "maxLength": 1024,
158
+ "description": "Human-readable description of what is needed and why."
159
+ }
160
+ },
161
+ "required": [
162
+ "kind",
163
+ "description"
164
+ ],
165
+ "additionalProperties": false,
166
+ "description": "One blocking input a needs_input/incomplete WorkReport lists."
167
+ },
168
+ "maxItems": 16,
169
+ "description": "Carried through from a needs_input/incomplete WorkReport for honest disclosure."
170
+ }
171
+ },
172
+ "required": [
173
+ "state",
174
+ "source"
175
+ ],
176
+ "additionalProperties": false,
177
+ "description": "D-16 model-attested work outcome, orthogonal to lifecycle; a needs_input/incomplete state vetoes applyability and exit 0. Absent on runs with no work_report transport."
98
178
  }
99
179
  },
100
180
  "required": [
@@ -196,6 +276,96 @@
196
276
  ],
197
277
  "description": "Derived plan readiness for plan tools (D17); null for non-plan tools.",
198
278
  "default": null
279
+ },
280
+ "council": {
281
+ "anyOf": [
282
+ {
283
+ "type": "object",
284
+ "properties": {
285
+ "requested": {
286
+ "type": "integer",
287
+ "exclusiveMinimum": 0,
288
+ "description": "Requested member count (n; 2..4)."
289
+ },
290
+ "drafted": {
291
+ "type": "integer",
292
+ "minimum": 0,
293
+ "description": "Members whose draft survived to the merge."
294
+ },
295
+ "degraded": {
296
+ "type": "boolean",
297
+ "default": false,
298
+ "description": "True when fewer members drafted than requested (failures disclosed per member)."
299
+ },
300
+ "mergedBy": {
301
+ "type": [
302
+ "string",
303
+ "null"
304
+ ],
305
+ "default": null,
306
+ "description": "Harness that produced the unified plan (the primary); null if the merge failed."
307
+ },
308
+ "members": {
309
+ "type": "array",
310
+ "items": {
311
+ "type": "object",
312
+ "properties": {
313
+ "harnessId": {
314
+ "type": "string",
315
+ "minLength": 1,
316
+ "description": "Harness that drafted (or merged) this member's plan."
317
+ },
318
+ "role": {
319
+ "type": "string",
320
+ "enum": [
321
+ "primary",
322
+ "member"
323
+ ],
324
+ "description": "primary = the merger that synthesizes the unified plan; member = draft only."
325
+ },
326
+ "status": {
327
+ "type": "string",
328
+ "enum": [
329
+ "drafted",
330
+ "failed",
331
+ "merged"
332
+ ],
333
+ "description": "drafted = draft landed; merged = this member produced the unified plan; failed."
334
+ },
335
+ "error": {
336
+ "type": [
337
+ "string",
338
+ "null"
339
+ ],
340
+ "default": null,
341
+ "description": "First redacted draft error; null unless the member failed."
342
+ }
343
+ },
344
+ "required": [
345
+ "harnessId",
346
+ "role",
347
+ "status"
348
+ ],
349
+ "additionalProperties": false,
350
+ "description": "One council member's role and draft/merge outcome."
351
+ },
352
+ "default": [],
353
+ "description": "Per-member role and outcome."
354
+ }
355
+ },
356
+ "required": [
357
+ "requested",
358
+ "drafted"
359
+ ],
360
+ "additionalProperties": false,
361
+ "description": "Council membership + merge disclosure for a --council plan run."
362
+ },
363
+ {
364
+ "type": "null"
365
+ }
366
+ ],
367
+ "description": "Council membership + merge disclosure (QA-023b); null for solo/non-plan tools or deferred handles.",
368
+ "default": null
199
369
  }
200
370
  },
201
371
  "required": [
@@ -0,0 +1,79 @@
1
+ {
2
+ "$ref": "#/definitions/RoutePoolDegradedPayload",
3
+ "definitions": {
4
+ "RoutePoolDegradedPayload": {
5
+ "type": "object",
6
+ "properties": {
7
+ "requested_harnesses": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "string"
11
+ },
12
+ "description": "The pool the resolver considered (explicit ids or auto-derived)."
13
+ },
14
+ "effective_harnesses": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ },
19
+ "description": "Distinct harnesses that actually route, in attempt order."
20
+ },
21
+ "requested_n": {
22
+ "type": "integer",
23
+ "description": "The requested candidate width for this run."
24
+ },
25
+ "effective_n": {
26
+ "type": "integer",
27
+ "description": "Distinct candidates that will run; never inflated by duplication."
28
+ },
29
+ "dropped_lanes": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "properties": {
34
+ "harness_id": {
35
+ "type": "string",
36
+ "description": "The dropped lane's harness id."
37
+ },
38
+ "stage": {
39
+ "type": "string",
40
+ "enum": [
41
+ "discovery",
42
+ "settings",
43
+ "credential",
44
+ "doctor",
45
+ "capability",
46
+ "access",
47
+ "web",
48
+ "attachment"
49
+ ],
50
+ "description": "The routing stage at which an auto-pool lane was dropped."
51
+ },
52
+ "detail": {
53
+ "type": "string",
54
+ "description": "Redacted human reason the lane was dropped."
55
+ }
56
+ },
57
+ "required": [
58
+ "harness_id",
59
+ "stage",
60
+ "detail"
61
+ ],
62
+ "additionalProperties": false
63
+ },
64
+ "description": "Every lane excluded from the auto pool, with its typed stage and reason."
65
+ }
66
+ },
67
+ "required": [
68
+ "requested_harnesses",
69
+ "effective_harnesses",
70
+ "requested_n",
71
+ "effective_n",
72
+ "dropped_lanes"
73
+ ],
74
+ "additionalProperties": false,
75
+ "description": "Typed payload for route.pool.degraded: the requested-vs-effective route receipt for an auto pool that dropped lanes or clamped width, validated before being stamped onto the RunEvent payload."
76
+ }
77
+ },
78
+ "$schema": "http://json-schema.org/draft-07/schema#"
79
+ }
@@ -35,6 +35,7 @@
35
35
  "task.contract.created",
36
36
  "context.pack.created",
37
37
  "project.git.initialized",
38
+ "project.claude_bridge.created",
38
39
  "budget.lease.created",
39
40
  "budget.observation",
40
41
  "budget.cash",
@@ -53,6 +54,7 @@
53
54
  "route.transient.exhausted",
54
55
  "route.fallback.auth_switched",
55
56
  "route.primary.diverged",
57
+ "route.pool.degraded",
56
58
  "session.continuity",
57
59
  "interaction.requested",
58
60
  "interaction.answered",
@@ -66,10 +68,12 @@
66
68
  "council.member.failed",
67
69
  "council.merged",
68
70
  "budget.quota_pressure",
71
+ "delegation.belt.unavailable",
69
72
  "output.ready",
70
73
  "gate.started",
71
74
  "gate.completed",
72
75
  "review.started",
76
+ "review.skipped",
73
77
  "reviewer.started",
74
78
  "reviewer.first_event",
75
79
  "reviewer.auth_switched",
@@ -86,7 +90,9 @@
86
90
  "control.rejected",
87
91
  "run.blocked",
88
92
  "run.completed",
89
- "run.failed"
93
+ "run.failed",
94
+ "run.continuation",
95
+ "run.continuation.denied"
90
96
  ],
91
97
  "description": "Type of an append-only run event, covering run lifecycle, contract/context creation, budget, routing fallbacks, harness activity, interactions, gates, review, arbitration, work products, and control verbs."
92
98
  },
@@ -17,6 +17,7 @@
17
17
  "auth",
18
18
  "harness_unavailable",
19
19
  "harness_error",
20
+ "config_error",
20
21
  "budget",
21
22
  "policy",
22
23
  "cancelled",
@@ -24,7 +25,28 @@
24
25
  "unknown"
25
26
  ],
26
27
  "default": "unknown",
27
- "description": "Typed failure category (validation, project, auth, harness, budget, policy, cancelled, internal, unknown)."
28
+ "description": "Typed failure category (validation, project, auth, harness, config, budget, policy, cancelled, internal, unknown). config_error is a settings/routing misconfiguration (e.g. quality routing with no comparable tier), corrected by changing configuration, not by re-auth or waiting for a harness."
29
+ },
30
+ "code": {
31
+ "anyOf": [
32
+ {
33
+ "type": "string",
34
+ "enum": [
35
+ "finite_zero",
36
+ "hard_cap",
37
+ "estimate_headroom",
38
+ "unknown_paid_in_flight",
39
+ "budget_overshoot",
40
+ "cost_unverifiable"
41
+ ],
42
+ "description": "Machine-readable failure sub-code within a RunFailure category (today the typed budget-denial reasons produced by the budget ledger)."
43
+ },
44
+ {
45
+ "type": "null"
46
+ }
47
+ ],
48
+ "description": "Machine-readable failure sub-code within the category (today the typed budget-denial reason from the ledger); null when the category alone is sufficient. Surfaces choose remediation from this, never by parsing safeMessage.",
49
+ "default": null
28
50
  },
29
51
  "harnessId": {
30
52
  "type": [