@claudexor/schema 3.1.1 → 3.2.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 (282) hide show
  1. package/dist/agent-capabilities.d.ts +232 -116
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +8 -1
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts +513 -222
  6. package/dist/apply-eligibility.d.ts.map +1 -1
  7. package/dist/apply-eligibility.js +42 -2
  8. package/dist/apply-eligibility.js.map +1 -1
  9. package/dist/attachment.d.ts +17 -17
  10. package/dist/attachment.d.ts.map +1 -1
  11. package/dist/attachment.js +1 -1
  12. package/dist/attachment.js.map +1 -1
  13. package/dist/auth.d.ts +475 -475
  14. package/dist/auth.d.ts.map +1 -1
  15. package/dist/auth.js +1 -1
  16. package/dist/auth.js.map +1 -1
  17. package/dist/budget.d.ts +61 -61
  18. package/dist/budget.d.ts.map +1 -1
  19. package/dist/budget.js +3 -1
  20. package/dist/budget.js.map +1 -1
  21. package/dist/config.d.ts +320 -316
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +26 -19
  24. package/dist/config.js.map +1 -1
  25. package/dist/context.d.ts +38 -38
  26. package/dist/context.d.ts.map +1 -1
  27. package/dist/context.js +1 -1
  28. package/dist/context.js.map +1 -1
  29. package/dist/control-auth-route.d.ts +46 -0
  30. package/dist/control-auth-route.d.ts.map +1 -0
  31. package/dist/control-auth-route.js +24 -0
  32. package/dist/control-auth-route.js.map +1 -0
  33. package/dist/control-gc.d.ts +15 -15
  34. package/dist/control-gc.d.ts.map +1 -1
  35. package/dist/control-gc.js +1 -1
  36. package/dist/control-gc.js.map +1 -1
  37. package/dist/control-harness-list.d.ts +896 -0
  38. package/dist/control-harness-list.d.ts.map +1 -0
  39. package/dist/control-harness-list.js +13 -0
  40. package/dist/control-harness-list.js.map +1 -0
  41. package/dist/control-operation-responses.d.ts +691 -590
  42. package/dist/control-operation-responses.d.ts.map +1 -1
  43. package/dist/control-operation-responses.js +27 -1
  44. package/dist/control-operation-responses.js.map +1 -1
  45. package/dist/control-run-detail.d.ts +2663 -920
  46. package/dist/control-run-detail.d.ts.map +1 -1
  47. package/dist/control-run-detail.js +13 -1
  48. package/dist/control-run-detail.js.map +1 -1
  49. package/dist/control-run-retry.d.ts +18 -18
  50. package/dist/control-run-retry.d.ts.map +1 -1
  51. package/dist/control-run-retry.js +1 -1
  52. package/dist/control-run-retry.js.map +1 -1
  53. package/dist/control-run-scope.d.ts +2 -2
  54. package/dist/control-run-scope.d.ts.map +1 -1
  55. package/dist/control-run-scope.js +1 -1
  56. package/dist/control-run-scope.js.map +1 -1
  57. package/dist/control-secret.d.ts +7 -7
  58. package/dist/control-secret.d.ts.map +1 -1
  59. package/dist/control-secret.js +1 -1
  60. package/dist/control-secret.js.map +1 -1
  61. package/dist/control-thread-apply.d.ts +65 -65
  62. package/dist/control-thread-apply.d.ts.map +1 -1
  63. package/dist/control-thread-apply.js +1 -1
  64. package/dist/control-thread-apply.js.map +1 -1
  65. package/dist/control-trust.d.ts +23 -23
  66. package/dist/control-trust.d.ts.map +1 -1
  67. package/dist/control-trust.js +1 -1
  68. package/dist/control-trust.js.map +1 -1
  69. package/dist/control.d.ts +1658 -2225
  70. package/dist/control.d.ts.map +1 -1
  71. package/dist/control.js +43 -73
  72. package/dist/control.js.map +1 -1
  73. package/dist/credential-profile-snapshot.d.ts +3185 -0
  74. package/dist/credential-profile-snapshot.d.ts.map +1 -0
  75. package/dist/credential-profile-snapshot.js +28 -0
  76. package/dist/credential-profile-snapshot.js.map +1 -0
  77. package/dist/credential-profile.d.ts +122 -107
  78. package/dist/credential-profile.d.ts.map +1 -1
  79. package/dist/credential-profile.js +12 -6
  80. package/dist/credential-profile.js.map +1 -1
  81. package/dist/decision.d.ts +122 -117
  82. package/dist/decision.d.ts.map +1 -1
  83. package/dist/decision.js +9 -4
  84. package/dist/decision.js.map +1 -1
  85. package/dist/deep-scan.d.ts +5 -5
  86. package/dist/deep-scan.d.ts.map +1 -1
  87. package/dist/deep-scan.js +1 -1
  88. package/dist/deep-scan.js.map +1 -1
  89. package/dist/delegation.d.ts +73 -0
  90. package/dist/delegation.d.ts.map +1 -0
  91. package/dist/delegation.js +120 -0
  92. package/dist/delegation.js.map +1 -0
  93. package/dist/delivery.d.ts +32 -32
  94. package/dist/delivery.d.ts.map +1 -1
  95. package/dist/delivery.js +1 -1
  96. package/dist/delivery.js.map +1 -1
  97. package/dist/effort.d.ts +1 -1
  98. package/dist/effort.d.ts.map +1 -1
  99. package/dist/effort.js +1 -1
  100. package/dist/effort.js.map +1 -1
  101. package/dist/events.d.ts +57 -37
  102. package/dist/events.d.ts.map +1 -1
  103. package/dist/events.js +23 -1
  104. package/dist/events.js.map +1 -1
  105. package/dist/gate.d.ts +7 -7
  106. package/dist/gate.d.ts.map +1 -1
  107. package/dist/gate.js +1 -1
  108. package/dist/gate.js.map +1 -1
  109. package/dist/git-capability.d.ts +23 -0
  110. package/dist/git-capability.d.ts.map +1 -0
  111. package/dist/git-capability.js +15 -0
  112. package/dist/git-capability.js.map +1 -0
  113. package/dist/harness.d.ts +409 -409
  114. package/dist/harness.d.ts.map +1 -1
  115. package/dist/harness.js +19 -22
  116. package/dist/harness.js.map +1 -1
  117. package/dist/index.d.ts +7 -0
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +7 -0
  120. package/dist/index.js.map +1 -1
  121. package/dist/interaction.d.ts +10 -0
  122. package/dist/interaction.d.ts.map +1 -0
  123. package/dist/interaction.js +2 -0
  124. package/dist/interaction.js.map +1 -0
  125. package/dist/operation.d.ts +113 -113
  126. package/dist/operation.d.ts.map +1 -1
  127. package/dist/operation.js +1 -1
  128. package/dist/operation.js.map +1 -1
  129. package/dist/output-schema-dialect.d.ts +1 -1
  130. package/dist/output-schema-dialect.d.ts.map +1 -1
  131. package/dist/output-schema-dialect.js +1 -1
  132. package/dist/output-schema-dialect.js.map +1 -1
  133. package/dist/output-schema.d.ts +2 -2
  134. package/dist/output-schema.js +2 -2
  135. package/dist/plan.d.ts +29 -29
  136. package/dist/plan.d.ts.map +1 -1
  137. package/dist/plan.js +1 -1
  138. package/dist/plan.js.map +1 -1
  139. package/dist/primitives.d.ts +1 -1
  140. package/dist/primitives.d.ts.map +1 -1
  141. package/dist/primitives.js +1 -1
  142. package/dist/primitives.js.map +1 -1
  143. package/dist/problem.d.ts +6 -6
  144. package/dist/problem.d.ts.map +1 -1
  145. package/dist/problem.js +1 -1
  146. package/dist/problem.js.map +1 -1
  147. package/dist/project.d.ts +87 -25
  148. package/dist/project.d.ts.map +1 -1
  149. package/dist/project.js +21 -1
  150. package/dist/project.js.map +1 -1
  151. package/dist/quota.d.ts +48 -48
  152. package/dist/quota.d.ts.map +1 -1
  153. package/dist/quota.js +1 -1
  154. package/dist/quota.js.map +1 -1
  155. package/dist/raw.d.ts +16 -16
  156. package/dist/raw.d.ts.map +1 -1
  157. package/dist/raw.js +1 -1
  158. package/dist/raw.js.map +1 -1
  159. package/dist/readiness.d.ts +264 -226
  160. package/dist/readiness.d.ts.map +1 -1
  161. package/dist/readiness.js +5 -1
  162. package/dist/readiness.js.map +1 -1
  163. package/dist/recovery.d.ts +106 -106
  164. package/dist/recovery.d.ts.map +1 -1
  165. package/dist/recovery.js +1 -1
  166. package/dist/recovery.js.map +1 -1
  167. package/dist/request-requirements.d.ts +12 -12
  168. package/dist/request-requirements.d.ts.map +1 -1
  169. package/dist/request-requirements.js +3 -2
  170. package/dist/request-requirements.js.map +1 -1
  171. package/dist/review.d.ts +29 -29
  172. package/dist/review.d.ts.map +1 -1
  173. package/dist/review.js +1 -1
  174. package/dist/review.js.map +1 -1
  175. package/dist/route.d.ts +11 -11
  176. package/dist/route.d.ts.map +1 -1
  177. package/dist/route.js +1 -1
  178. package/dist/route.js.map +1 -1
  179. package/dist/run-applicability.d.ts +764 -0
  180. package/dist/run-applicability.d.ts.map +1 -0
  181. package/dist/run-applicability.js +56 -0
  182. package/dist/run-applicability.js.map +1 -0
  183. package/dist/run-facts.d.ts +628 -0
  184. package/dist/run-facts.d.ts.map +1 -0
  185. package/dist/run-facts.js +429 -0
  186. package/dist/run-facts.js.map +1 -0
  187. package/dist/run-strategy.d.ts +40 -0
  188. package/dist/run-strategy.d.ts.map +1 -1
  189. package/dist/run-strategy.js +68 -1
  190. package/dist/run-strategy.js.map +1 -1
  191. package/dist/setup-device-code-envelope.d.ts +67 -0
  192. package/dist/setup-device-code-envelope.d.ts.map +1 -0
  193. package/dist/setup-device-code-envelope.js +25 -0
  194. package/dist/setup-device-code-envelope.js.map +1 -0
  195. package/dist/setup-login-protocol.d.ts +6 -0
  196. package/dist/setup-login-protocol.d.ts.map +1 -0
  197. package/dist/setup-login-protocol.js +12 -0
  198. package/dist/setup-login-protocol.js.map +1 -0
  199. package/dist/setup-transport.d.ts +12 -0
  200. package/dist/setup-transport.d.ts.map +1 -0
  201. package/dist/setup-transport.js +22 -0
  202. package/dist/setup-transport.js.map +1 -0
  203. package/dist/setup.d.ts +12572 -3749
  204. package/dist/setup.d.ts.map +1 -1
  205. package/dist/setup.js +34 -38
  206. package/dist/setup.js.map +1 -1
  207. package/dist/status-projection.d.ts +7 -5
  208. package/dist/status-projection.d.ts.map +1 -1
  209. package/dist/status-projection.js +11 -6
  210. package/dist/status-projection.js.map +1 -1
  211. package/dist/surface-run-controls.d.ts.map +1 -1
  212. package/dist/surface-run-controls.js +10 -1
  213. package/dist/surface-run-controls.js.map +1 -1
  214. package/dist/task.d.ts +331 -289
  215. package/dist/task.d.ts.map +1 -1
  216. package/dist/task.js +12 -1
  217. package/dist/task.js.map +1 -1
  218. package/dist/telemetry.d.ts +1189 -627
  219. package/dist/telemetry.d.ts.map +1 -1
  220. package/dist/telemetry.js +13 -13
  221. package/dist/telemetry.js.map +1 -1
  222. package/dist/thread.d.ts +128 -84
  223. package/dist/thread.d.ts.map +1 -1
  224. package/dist/thread.js +16 -2
  225. package/dist/thread.js.map +1 -1
  226. package/dist/tool-ref.d.ts +7 -7
  227. package/dist/tool-ref.d.ts.map +1 -1
  228. package/dist/tool-ref.js +1 -1
  229. package/dist/tool-ref.js.map +1 -1
  230. package/dist/work-report.d.ts +28 -28
  231. package/dist/work-report.d.ts.map +1 -1
  232. package/dist/work-report.js +3 -3
  233. package/dist/work-report.js.map +1 -1
  234. package/dist/workproduct.d.ts +6 -9
  235. package/dist/workproduct.d.ts.map +1 -1
  236. package/dist/workproduct.js +1 -2
  237. package/dist/workproduct.js.map +1 -1
  238. package/dist/workspace.d.ts +14 -14
  239. package/dist/workspace.d.ts.map +1 -1
  240. package/dist/workspace.js +8 -8
  241. package/dist/workspace.js.map +1 -1
  242. package/generated/AgentCapabilityCatalog.schema.json +80 -1
  243. package/generated/ControlCredentialProfilesQueryResponse.schema.json +1333 -0
  244. package/generated/ControlCredentialProfilesResponse.schema.json +10 -2
  245. package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +1312 -0
  246. package/generated/ControlDirectoryEntry.schema.json +36 -0
  247. package/generated/ControlDirectoryListing.schema.json +77 -0
  248. package/generated/ControlHarnessListResponse.schema.json +89 -3
  249. package/generated/ControlRunAgainDraft.schema.json +7 -3
  250. package/generated/ControlRunApplicabilityResponse.schema.json +217 -0
  251. package/generated/ControlRunControlResponse.schema.json +8 -0
  252. package/generated/ControlRunDetail.schema.json +543 -80
  253. package/generated/ControlRunListResponse.schema.json +104 -11
  254. package/generated/ControlRunStartRequest.schema.json +7 -3
  255. package/generated/ControlRunSummary.schema.json +104 -11
  256. package/generated/ControlSettingsSnapshot.schema.json +12 -3
  257. package/generated/ControlSettingsUpdateRequest.schema.json +12 -3
  258. package/generated/ControlSetupJob.schema.json +9 -0
  259. package/generated/ControlSetupJobCreateRequest.schema.json +9 -0
  260. package/generated/ControlSetupJobEvent.schema.json +858 -758
  261. package/generated/ControlSetupJobListResponse.schema.json +9 -0
  262. package/generated/ControlSetupJobSnapshot.schema.json +811 -736
  263. package/generated/ControlThreadDetail.schema.json +83 -1
  264. package/generated/ControlThreadTurnRequest.schema.json +2 -25
  265. package/generated/DecisionRecord.schema.json +12 -2
  266. package/generated/GitCapability.schema.json +46 -0
  267. package/generated/GlobalConfig.schema.json +13 -4
  268. package/generated/HarnessEvent.schema.json +2 -1
  269. package/generated/HarnessManifest.schema.json +3 -3
  270. package/generated/HarnessStatusDto.schema.json +49 -3
  271. package/generated/McpRunHandleResult.schema.json +237 -2
  272. package/generated/McpRunToolResult.schema.json +234 -1
  273. package/generated/OutputReadyPayload.schema.json +44 -0
  274. package/generated/RunEvent.schema.json +1 -0
  275. package/generated/RunFacts.schema.json +569 -0
  276. package/generated/RunFailure.schema.json +4 -3
  277. package/generated/RunTelemetry.schema.json +553 -4
  278. package/generated/TaskContract.schema.json +43 -3
  279. package/generated/ThreadTurn.schema.json +17 -0
  280. package/generated/WorkProduct.schema.json +0 -4
  281. package/generated/WorkspaceEnvelope.schema.json +6 -6
  282. package/package.json +3 -3
@@ -0,0 +1,569 @@
1
+ {
2
+ "$ref": "#/definitions/RunFacts",
3
+ "definitions": {
4
+ "RunFacts": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema_version": {
8
+ "type": "number",
9
+ "const": 2,
10
+ "description": "Schema version of the artifact; bumped on breaking ABI changes."
11
+ },
12
+ "run_id": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "description": "Non-empty identifier string."
16
+ },
17
+ "task_id": {
18
+ "$ref": "#/definitions/RunFacts/properties/run_id"
19
+ },
20
+ "mode": {
21
+ "type": "string",
22
+ "enum": [
23
+ "ask",
24
+ "plan",
25
+ "agent"
26
+ ],
27
+ "description": "Canonical run mode: ask and plan are read-only, agent writes. Engine strategies (race width, attempts, deep_scan, create, delegate) are flags on a mode, not modes."
28
+ },
29
+ "outcome": {
30
+ "type": "object",
31
+ "properties": {
32
+ "lifecycle": {
33
+ "type": "string",
34
+ "enum": [
35
+ "succeeded",
36
+ "failed",
37
+ "cancelled",
38
+ "interrupted"
39
+ ],
40
+ "description": "Terminal lifecycle of the run."
41
+ },
42
+ "noChanges": {
43
+ "type": "boolean",
44
+ "default": false,
45
+ "description": "True when the run finished without changing any files (the ex no_op fact)."
46
+ },
47
+ "checks": {
48
+ "type": "string",
49
+ "enum": [
50
+ "passed",
51
+ "failed",
52
+ "not_configured"
53
+ ],
54
+ "description": "Deterministic checks axis: configured project checks passed, failed, or none are configured (a named state, never a stand-in for review results).",
55
+ "default": "not_configured"
56
+ },
57
+ "review": {
58
+ "type": "string",
59
+ "enum": [
60
+ "approved",
61
+ "blocked",
62
+ "not_run"
63
+ ],
64
+ "description": "Review axis: approved (clean cross-family verified review), blocked (open accepted findings), or not_run.",
65
+ "default": "not_run"
66
+ },
67
+ "reason": {
68
+ "anyOf": [
69
+ {
70
+ "type": "string",
71
+ "enum": [
72
+ "harness_failed",
73
+ "no_changes",
74
+ "review_blocked",
75
+ "checks_failed",
76
+ "budget_exhausted",
77
+ "budget_overshoot",
78
+ "cost_unverifiable",
79
+ "not_converged",
80
+ "stuck_no_progress",
81
+ "wall_clock_exceeded",
82
+ "user_cancelled",
83
+ "crash_interrupted",
84
+ "workspace_unavailable",
85
+ "input_required",
86
+ "work_incomplete",
87
+ "context_capacity_exhausted",
88
+ "work_report_contract"
89
+ ],
90
+ "description": "Typed reason qualifying a non-clean terminal; null on a clean success."
91
+ },
92
+ {
93
+ "type": "null"
94
+ }
95
+ ],
96
+ "description": "Typed reason qualifying a non-clean terminal; null on a clean success.",
97
+ "default": null
98
+ },
99
+ "work_state": {
100
+ "type": "object",
101
+ "properties": {
102
+ "state": {
103
+ "type": "string",
104
+ "enum": [
105
+ "completed",
106
+ "needs_input",
107
+ "incomplete",
108
+ "unverified"
109
+ ],
110
+ "description": "Folded work state: the WorkReport state, or unverified when no report was obtainable (transport unsupported / lane gated)."
111
+ },
112
+ "source": {
113
+ "type": "string",
114
+ "enum": [
115
+ "constrained",
116
+ "validated",
117
+ "absent"
118
+ ],
119
+ "description": "Provenance of a WorkReport: constrained (native schema transport), validated (instructed terminal metadata), or absent (no transport could carry one — a disclosed absence, not a failure)."
120
+ },
121
+ "required_inputs": {
122
+ "type": "array",
123
+ "items": {
124
+ "type": "object",
125
+ "properties": {
126
+ "kind": {
127
+ "type": "string",
128
+ "enum": [
129
+ "file",
130
+ "context",
131
+ "credential",
132
+ "permission",
133
+ "decision",
134
+ "external_dependency"
135
+ ],
136
+ "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."
137
+ },
138
+ "locator": {
139
+ "anyOf": [
140
+ {
141
+ "type": "string",
142
+ "maxLength": 512
143
+ },
144
+ {
145
+ "type": "null"
146
+ }
147
+ ],
148
+ "default": null,
149
+ "description": "Concrete pointer to the missing thing (path/url/name); null when unnameable."
150
+ },
151
+ "description": {
152
+ "type": "string",
153
+ "maxLength": 1024,
154
+ "description": "Human-readable description of what is needed and why."
155
+ }
156
+ },
157
+ "required": [
158
+ "kind",
159
+ "description"
160
+ ],
161
+ "additionalProperties": false,
162
+ "description": "One blocking input a needs_input/incomplete WorkReport lists."
163
+ },
164
+ "maxItems": 16,
165
+ "description": "Carried through from a needs_input/incomplete WorkReport for honest disclosure."
166
+ }
167
+ },
168
+ "required": [
169
+ "state",
170
+ "source"
171
+ ],
172
+ "additionalProperties": false,
173
+ "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."
174
+ }
175
+ },
176
+ "required": [
177
+ "lifecycle"
178
+ ],
179
+ "additionalProperties": false,
180
+ "description": "Independent terminal outcome axes of a run (D8/D18)."
181
+ },
182
+ "deliverable": {
183
+ "type": "object",
184
+ "properties": {
185
+ "present": {
186
+ "type": "boolean",
187
+ "description": "Whether the canonical primary deliverable exists."
188
+ },
189
+ "kind": {
190
+ "anyOf": [
191
+ {
192
+ "type": "string",
193
+ "enum": [
194
+ "answer",
195
+ "report",
196
+ "plan",
197
+ "patch",
198
+ "structured_output"
199
+ ]
200
+ },
201
+ {
202
+ "type": "null"
203
+ }
204
+ ],
205
+ "description": "Kind of canonical primary deliverable; null when none exists."
206
+ },
207
+ "path": {
208
+ "type": [
209
+ "string",
210
+ "null"
211
+ ],
212
+ "description": "Run-relative path of the canonical primary deliverable; null when absent."
213
+ },
214
+ "producer_attempt_id": {
215
+ "anyOf": [
216
+ {
217
+ "$ref": "#/definitions/RunFacts/properties/run_id"
218
+ },
219
+ {
220
+ "type": "null"
221
+ }
222
+ ],
223
+ "description": "Attempt that produced the deliverable, when known.",
224
+ "default": null
225
+ }
226
+ },
227
+ "required": [
228
+ "present",
229
+ "kind",
230
+ "path"
231
+ ],
232
+ "additionalProperties": false,
233
+ "description": "Canonical primary-output presence and identity for a terminal run."
234
+ },
235
+ "presentation": {
236
+ "type": "object",
237
+ "properties": {
238
+ "state": {
239
+ "type": "string",
240
+ "enum": [
241
+ "ready",
242
+ "diagnostic"
243
+ ],
244
+ "description": "Terminal output readiness decided by the last valid output.ready receipt."
245
+ },
246
+ "primary": {
247
+ "anyOf": [
248
+ {
249
+ "type": "object",
250
+ "properties": {
251
+ "kind": {
252
+ "type": "string",
253
+ "enum": [
254
+ "answer",
255
+ "report",
256
+ "plan",
257
+ "patch",
258
+ "structured_output",
259
+ "diagnostic"
260
+ ],
261
+ "description": "Presentation kind of the terminal primary artifact."
262
+ },
263
+ "path": {
264
+ "type": "string",
265
+ "minLength": 1,
266
+ "description": "Normalized run-relative path of the terminal primary artifact."
267
+ }
268
+ },
269
+ "required": [
270
+ "kind",
271
+ "path"
272
+ ],
273
+ "additionalProperties": false,
274
+ "description": "Primary user-facing artifact selected once during terminal preparation."
275
+ },
276
+ {
277
+ "type": "null"
278
+ }
279
+ ],
280
+ "description": "Selected terminal primary artifact, or null when the receipt announces readiness without a primary deliverable."
281
+ }
282
+ },
283
+ "required": [
284
+ "state",
285
+ "primary"
286
+ ],
287
+ "additionalProperties": false,
288
+ "description": "Immutable terminal output state and primary artifact. Absent only on legacy RunFacts receipts."
289
+ },
290
+ "participants": {
291
+ "type": "object",
292
+ "properties": {
293
+ "planners": {
294
+ "type": "integer",
295
+ "minimum": 0,
296
+ "description": "Number of participants whose canonical role is planner."
297
+ },
298
+ "attempts": {
299
+ "type": "array",
300
+ "items": {
301
+ "type": "object",
302
+ "properties": {
303
+ "attempt_id": {
304
+ "anyOf": [
305
+ {
306
+ "$ref": "#/definitions/RunFacts/properties/run_id"
307
+ },
308
+ {
309
+ "type": "null"
310
+ }
311
+ ],
312
+ "description": "Attempt id when the participant owns an orchestrator attempt; null for reviewer-panel members."
313
+ },
314
+ "harness_id": {
315
+ "type": "string",
316
+ "minLength": 1,
317
+ "description": "Harness that served this participant role."
318
+ },
319
+ "role": {
320
+ "type": "string",
321
+ "enum": [
322
+ "planner",
323
+ "merge",
324
+ "candidate",
325
+ "scout",
326
+ "reducer",
327
+ "reviewer"
328
+ ],
329
+ "description": "Canonical role of one participant in the terminal run graph."
330
+ },
331
+ "deliverable_present": {
332
+ "type": "boolean",
333
+ "default": false,
334
+ "description": "Whether this participant produced the deliverable its role requested."
335
+ },
336
+ "status": {
337
+ "anyOf": [
338
+ {
339
+ "type": "string",
340
+ "enum": [
341
+ "success",
342
+ "success_with_warnings",
343
+ "blocked",
344
+ "failed"
345
+ ],
346
+ "description": "Terminal outcome recorded for one run participant."
347
+ },
348
+ {
349
+ "type": "null"
350
+ }
351
+ ],
352
+ "description": "Participant outcome when recorded; null for artifact-only reviewer membership.",
353
+ "default": null
354
+ }
355
+ },
356
+ "required": [
357
+ "attempt_id",
358
+ "harness_id",
359
+ "role"
360
+ ],
361
+ "additionalProperties": false,
362
+ "description": "One role-labelled participant in the terminal run graph."
363
+ },
364
+ "default": [],
365
+ "description": "Role-labelled participant roster."
366
+ }
367
+ },
368
+ "required": [
369
+ "planners"
370
+ ],
371
+ "additionalProperties": false,
372
+ "description": "Terminal participant graph plus its planner-lane count."
373
+ },
374
+ "gates": {
375
+ "type": "object",
376
+ "properties": {
377
+ "configured": {
378
+ "type": "boolean",
379
+ "description": "Whether the frozen task configured deterministic gates."
380
+ },
381
+ "required": {
382
+ "type": "integer",
383
+ "minimum": 0,
384
+ "description": "Number of configured required gates."
385
+ },
386
+ "total": {
387
+ "type": "integer",
388
+ "minimum": 0,
389
+ "description": "Total configured deterministic gates."
390
+ },
391
+ "executed": {
392
+ "type": "boolean",
393
+ "description": "Whether the terminal attempt executed the gate set."
394
+ },
395
+ "state": {
396
+ "type": "string",
397
+ "enum": [
398
+ "not_configured",
399
+ "passed",
400
+ "failed",
401
+ "skipped"
402
+ ],
403
+ "description": "Terminal state of the configured deterministic gate set."
404
+ },
405
+ "receipt_attempt_id": {
406
+ "anyOf": [
407
+ {
408
+ "$ref": "#/definitions/RunFacts/properties/run_id"
409
+ },
410
+ {
411
+ "type": "null"
412
+ }
413
+ ],
414
+ "description": "Attempt whose gate receipt decides this projection; null when no gates executed.",
415
+ "default": null
416
+ }
417
+ },
418
+ "required": [
419
+ "configured",
420
+ "required",
421
+ "total",
422
+ "executed",
423
+ "state"
424
+ ],
425
+ "additionalProperties": false,
426
+ "description": "Canonical gate configuration and terminal receipt projection."
427
+ },
428
+ "review": {
429
+ "type": "object",
430
+ "properties": {
431
+ "state": {
432
+ "$ref": "#/definitions/RunFacts/properties/outcome/properties/review"
433
+ },
434
+ "blocker_ids": {
435
+ "type": "array",
436
+ "items": {
437
+ "$ref": "#/definitions/RunFacts/properties/run_id"
438
+ },
439
+ "default": [],
440
+ "description": "Stable ids of accepted evidence-backed blocking findings."
441
+ },
442
+ "blockers": {
443
+ "type": "integer",
444
+ "minimum": 0,
445
+ "description": "Number of blocking findings."
446
+ }
447
+ },
448
+ "required": [
449
+ "state",
450
+ "blockers"
451
+ ],
452
+ "additionalProperties": false,
453
+ "description": "Canonical terminal review verdict and blocking-finding identity."
454
+ },
455
+ "apply": {
456
+ "type": "object",
457
+ "properties": {
458
+ "eligibility": {
459
+ "anyOf": [
460
+ {
461
+ "type": "object",
462
+ "properties": {
463
+ "eligible": {
464
+ "type": "boolean",
465
+ "description": "True when the apply gate would accept this run's patch right now."
466
+ },
467
+ "state": {
468
+ "type": [
469
+ "string",
470
+ "null"
471
+ ],
472
+ "description": "The gate's apply-eligibility classification (e.g. needs_review | not_verified | no_changes | ok) when known."
473
+ },
474
+ "reason": {
475
+ "type": [
476
+ "string",
477
+ "null"
478
+ ],
479
+ "description": "The gate's refusal text when not eligible (null when eligible)."
480
+ },
481
+ "requiredAction": {
482
+ "type": [
483
+ "string",
484
+ "null"
485
+ ],
486
+ "description": "Honest guidance for what actually unblocks apply (typed operator decision, add gates, re-run, or nothing to apply)."
487
+ }
488
+ },
489
+ "required": [
490
+ "eligible",
491
+ "state",
492
+ "reason",
493
+ "requiredAction"
494
+ ],
495
+ "additionalProperties": false,
496
+ "description": "Derived apply-gate verdict for a run's WorkProduct (single producer in the delivery gate)."
497
+ },
498
+ {
499
+ "type": "null"
500
+ }
501
+ ],
502
+ "description": "Delivery-gate eligibility at terminalization; null when nothing is applyable.",
503
+ "default": null
504
+ },
505
+ "operator_decision_present": {
506
+ "type": "boolean",
507
+ "default": false,
508
+ "description": "Whether a valid operator decision was present when the receipt was finalized."
509
+ }
510
+ },
511
+ "additionalProperties": false,
512
+ "description": "Terminal apply eligibility and operator-decision state."
513
+ },
514
+ "required_actions": {
515
+ "type": "array",
516
+ "items": {
517
+ "type": "object",
518
+ "properties": {
519
+ "id": {
520
+ "type": "string",
521
+ "enum": [
522
+ "provide_required_input",
523
+ "complete_incomplete_work",
524
+ "resolve_review_block",
525
+ "fix_failed_checks",
526
+ "record_operator_decision"
527
+ ],
528
+ "description": "Stable machine id for a required operator action on a blocked terminal run."
529
+ },
530
+ "detail": {
531
+ "type": "string",
532
+ "description": "Human-readable guidance for this action (English-only, INV-141)."
533
+ }
534
+ },
535
+ "required": [
536
+ "id",
537
+ "detail"
538
+ ],
539
+ "additionalProperties": false,
540
+ "description": "One typed required operator action derived from a run's terminal outcome facts."
541
+ },
542
+ "default": [],
543
+ "description": "Typed actions required to unblock this terminal outcome."
544
+ },
545
+ "generated_at": {
546
+ "type": "string",
547
+ "minLength": 1,
548
+ "description": "When this immutable terminal receipt was finalized."
549
+ }
550
+ },
551
+ "required": [
552
+ "schema_version",
553
+ "run_id",
554
+ "task_id",
555
+ "mode",
556
+ "outcome",
557
+ "deliverable",
558
+ "participants",
559
+ "gates",
560
+ "review",
561
+ "apply",
562
+ "generated_at"
563
+ ],
564
+ "additionalProperties": false,
565
+ "description": "Validated immutable terminal facts for one run."
566
+ }
567
+ },
568
+ "$schema": "http://json-schema.org/draft-07/schema#"
569
+ }
@@ -37,15 +37,16 @@
37
37
  "estimate_headroom",
38
38
  "unknown_paid_in_flight",
39
39
  "budget_overshoot",
40
- "cost_unverifiable"
40
+ "cost_unverifiable",
41
+ "delegation_child_drain_timeout"
41
42
  ],
42
- "description": "Machine-readable failure sub-code within a RunFailure category (today the typed budget-denial reasons produced by the budget ledger)."
43
+ "description": "Machine-readable failure sub-code within a RunFailure category (budget-denial reasons and Delegate child-drain timeout)."
43
44
  },
44
45
  {
45
46
  "type": "null"
46
47
  }
47
48
  ],
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
+ "description": "Machine-readable failure sub-code within the category; null when the category alone is sufficient. Surfaces choose remediation from this, never by parsing safeMessage.",
49
50
  "default": null
50
51
  },
51
52
  "harnessId": {