@claudexor/schema 1.0.0 → 2.0.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 (248) hide show
  1. package/dist/agent-capabilities.d.ts +88 -16
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +49 -18
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts.map +1 -1
  6. package/dist/apply-eligibility.js +22 -6
  7. package/dist/apply-eligibility.js.map +1 -1
  8. package/dist/attachment.d.ts +113 -48
  9. package/dist/attachment.d.ts.map +1 -1
  10. package/dist/attachment.js +60 -45
  11. package/dist/attachment.js.map +1 -1
  12. package/dist/auth.d.ts +1423 -0
  13. package/dist/auth.d.ts.map +1 -0
  14. package/dist/auth.js +317 -0
  15. package/dist/auth.js.map +1 -0
  16. package/dist/budget.d.ts +133 -16
  17. package/dist/budget.d.ts.map +1 -1
  18. package/dist/budget.js +65 -22
  19. package/dist/budget.js.map +1 -1
  20. package/dist/config.d.ts +449 -115
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +114 -41
  23. package/dist/config.js.map +1 -1
  24. package/dist/context.d.ts +6 -6
  25. package/dist/context.d.ts.map +1 -1
  26. package/dist/context.js +31 -7
  27. package/dist/context.js.map +1 -1
  28. package/dist/control-operation-responses.d.ts +1172 -0
  29. package/dist/control-operation-responses.d.ts.map +1 -0
  30. package/dist/control-operation-responses.js +35 -0
  31. package/dist/control-operation-responses.js.map +1 -0
  32. package/dist/control-run-detail.d.ts +443 -242
  33. package/dist/control-run-detail.d.ts.map +1 -1
  34. package/dist/control-run-detail.js +72 -17
  35. package/dist/control-run-detail.js.map +1 -1
  36. package/dist/control-run-retry.d.ts +88 -0
  37. package/dist/control-run-retry.d.ts.map +1 -0
  38. package/dist/control-run-retry.js +40 -0
  39. package/dist/control-run-retry.js.map +1 -0
  40. package/dist/control-run-scope.d.ts +25 -0
  41. package/dist/control-run-scope.d.ts.map +1 -0
  42. package/dist/control-run-scope.js +22 -0
  43. package/dist/control-run-scope.js.map +1 -0
  44. package/dist/control-secret.d.ts +90 -0
  45. package/dist/control-secret.d.ts.map +1 -0
  46. package/dist/control-secret.js +35 -0
  47. package/dist/control-secret.js.map +1 -0
  48. package/dist/control-spec.d.ts +592 -0
  49. package/dist/control-spec.d.ts.map +1 -0
  50. package/dist/control-spec.js +85 -0
  51. package/dist/control-spec.js.map +1 -0
  52. package/dist/control-thread-apply.d.ts +175 -0
  53. package/dist/control-thread-apply.d.ts.map +1 -0
  54. package/dist/control-thread-apply.js +31 -0
  55. package/dist/control-thread-apply.js.map +1 -0
  56. package/dist/control-trust.d.ts +74 -10
  57. package/dist/control-trust.d.ts.map +1 -1
  58. package/dist/control-trust.js +31 -11
  59. package/dist/control-trust.js.map +1 -1
  60. package/dist/control.d.ts +1391 -878
  61. package/dist/control.d.ts.map +1 -1
  62. package/dist/control.js +468 -310
  63. package/dist/control.js.map +1 -1
  64. package/dist/decision.d.ts +10 -10
  65. package/dist/decision.d.ts.map +1 -1
  66. package/dist/decision.js +62 -15
  67. package/dist/decision.js.map +1 -1
  68. package/dist/delivery.d.ts +99 -0
  69. package/dist/delivery.d.ts.map +1 -0
  70. package/dist/delivery.js +19 -0
  71. package/dist/delivery.js.map +1 -0
  72. package/dist/events.d.ts +25 -2
  73. package/dist/events.d.ts.map +1 -1
  74. package/dist/events.js +25 -4
  75. package/dist/events.js.map +1 -1
  76. package/dist/gate.d.ts +2 -2
  77. package/dist/gate.d.ts.map +1 -1
  78. package/dist/gate.js +25 -5
  79. package/dist/gate.js.map +1 -1
  80. package/dist/harness.d.ts +558 -175
  81. package/dist/harness.d.ts.map +1 -1
  82. package/dist/harness.js +207 -82
  83. package/dist/harness.js.map +1 -1
  84. package/dist/index.d.ts +15 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +15 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/operation.d.ts +185 -0
  89. package/dist/operation.d.ts.map +1 -0
  90. package/dist/operation.js +50 -0
  91. package/dist/operation.js.map +1 -0
  92. package/dist/orchestrate.d.ts +127 -22
  93. package/dist/orchestrate.d.ts.map +1 -1
  94. package/dist/orchestrate.js +61 -7
  95. package/dist/orchestrate.js.map +1 -1
  96. package/dist/primitives.d.ts.map +1 -1
  97. package/dist/primitives.js +4 -1
  98. package/dist/primitives.js.map +1 -1
  99. package/dist/problem.d.ts +29 -0
  100. package/dist/problem.d.ts.map +1 -0
  101. package/dist/problem.js +17 -0
  102. package/dist/problem.js.map +1 -0
  103. package/dist/project.d.ts +97 -0
  104. package/dist/project.d.ts.map +1 -0
  105. package/dist/project.js +27 -0
  106. package/dist/project.js.map +1 -0
  107. package/dist/quota.d.ts +251 -0
  108. package/dist/quota.d.ts.map +1 -0
  109. package/dist/quota.js +46 -0
  110. package/dist/quota.js.map +1 -0
  111. package/dist/raw.d.ts +195 -0
  112. package/dist/raw.d.ts.map +1 -0
  113. package/dist/raw.js +58 -0
  114. package/dist/raw.js.map +1 -0
  115. package/dist/recovery.d.ts +515 -0
  116. package/dist/recovery.d.ts.map +1 -0
  117. package/dist/recovery.js +93 -0
  118. package/dist/recovery.js.map +1 -0
  119. package/dist/request-requirements.d.ts +36 -0
  120. package/dist/request-requirements.d.ts.map +1 -0
  121. package/dist/request-requirements.js +26 -0
  122. package/dist/request-requirements.js.map +1 -0
  123. package/dist/review.d.ts +26 -26
  124. package/dist/review.d.ts.map +1 -1
  125. package/dist/review.js +50 -10
  126. package/dist/review.js.map +1 -1
  127. package/dist/route.d.ts +10 -10
  128. package/dist/route.d.ts.map +1 -1
  129. package/dist/route.js +19 -4
  130. package/dist/route.js.map +1 -1
  131. package/dist/setup.d.ts +9766 -0
  132. package/dist/setup.d.ts.map +1 -0
  133. package/dist/setup.js +450 -0
  134. package/dist/setup.js.map +1 -0
  135. package/dist/spec.d.ts +174 -57
  136. package/dist/spec.d.ts.map +1 -1
  137. package/dist/spec.js +69 -16
  138. package/dist/spec.js.map +1 -1
  139. package/dist/surface-run-controls.d.ts.map +1 -1
  140. package/dist/surface-run-controls.js +25 -21
  141. package/dist/surface-run-controls.js.map +1 -1
  142. package/dist/task.d.ts +1560 -58
  143. package/dist/task.d.ts.map +1 -1
  144. package/dist/task.js +97 -18
  145. package/dist/task.js.map +1 -1
  146. package/dist/telemetry.d.ts +233 -60
  147. package/dist/telemetry.d.ts.map +1 -1
  148. package/dist/telemetry.js +97 -15
  149. package/dist/telemetry.js.map +1 -1
  150. package/dist/thread.d.ts +68 -41
  151. package/dist/thread.d.ts.map +1 -1
  152. package/dist/thread.js +45 -11
  153. package/dist/thread.js.map +1 -1
  154. package/dist/workproduct.d.ts +3 -3
  155. package/dist/workproduct.d.ts.map +1 -1
  156. package/dist/workproduct.js.map +1 -1
  157. package/dist/workspace.d.ts +1 -1
  158. package/dist/workspace.d.ts.map +1 -1
  159. package/dist/workspace.js +12 -3
  160. package/dist/workspace.js.map +1 -1
  161. package/generated/AgentCapabilityCatalog.schema.json +53 -11
  162. package/generated/BudgetLease.schema.json +55 -6
  163. package/generated/BudgetObservation.schema.json +28 -7
  164. package/generated/ConformanceReport.schema.json +49 -0
  165. package/generated/ControlApplyCheckResponse.schema.json +34 -0
  166. package/generated/ControlArtifactListResponse.schema.json +57 -0
  167. package/generated/ControlAuthReadinessRefreshRequest.schema.json +38 -0
  168. package/generated/ControlAuthReadinessRefreshResponse.schema.json +85 -0
  169. package/generated/ControlDeliveryResponse.schema.json +136 -0
  170. package/generated/ControlHandshakeRequest.schema.json +26 -0
  171. package/generated/ControlHandshakeResponse.schema.json +30 -0
  172. package/generated/ControlHarnessListResponse.schema.json +103 -12
  173. package/generated/ControlHarnessSettingsPatch.schema.json +0 -12
  174. package/generated/ControlJournalEvent.schema.json +42 -0
  175. package/generated/ControlJournalExportReceipt.schema.json +49 -0
  176. package/generated/ControlJournalInspection.schema.json +149 -0
  177. package/generated/ControlJournalQuarantineReceipt.schema.json +55 -0
  178. package/generated/ControlJournalQuarantineRequest.schema.json +24 -0
  179. package/generated/ControlJournalValidation.schema.json +181 -0
  180. package/generated/ControlOperationCatalog.schema.json +128 -0
  181. package/generated/ControlOperationDescriptor.schema.json +110 -0
  182. package/generated/ControlProblem.schema.json +59 -0
  183. package/generated/ControlProject.schema.json +42 -0
  184. package/generated/ControlProjectListResponse.schema.json +54 -0
  185. package/generated/ControlProjectRegisterRequest.schema.json +19 -0
  186. package/generated/ControlProjectRelinkRequest.schema.json +19 -0
  187. package/generated/ControlQueuedRunInfo.schema.json +4 -2
  188. package/generated/ControlQuotaResponse.schema.json +176 -0
  189. package/generated/ControlResource.schema.json +59 -0
  190. package/generated/ControlRunAgainDraft.schema.json +499 -0
  191. package/generated/ControlRunDetail.schema.json +197 -30
  192. package/generated/ControlRunListResponse.schema.json +797 -0
  193. package/generated/ControlRunRetryResponse.schema.json +54 -0
  194. package/generated/ControlRunStartRequest.schema.json +83 -55
  195. package/generated/ControlRunStartResponse.schema.json +78 -0
  196. package/generated/ControlRunSummary.schema.json +140 -20
  197. package/generated/ControlSecretListResponse.schema.json +8 -14
  198. package/generated/ControlSecretMutationResponse.schema.json +32 -0
  199. package/generated/ControlSecretSetRequest.schema.json +27 -0
  200. package/generated/ControlSettingsSnapshot.schema.json +118 -44
  201. package/generated/ControlSettingsUpdateRequest.schema.json +110 -40
  202. package/generated/ControlSetupJob.schema.json +763 -65
  203. package/generated/ControlSetupJobCreateRequest.schema.json +11 -13
  204. package/generated/ControlSetupJobEvent.schema.json +861 -5
  205. package/generated/ControlSetupJobListFilter.schema.json +35 -0
  206. package/generated/ControlSetupJobListResponse.schema.json +763 -65
  207. package/generated/ControlSetupJobSnapshot.schema.json +870 -0
  208. package/generated/ControlSpecAnswersRequest.schema.json +74 -0
  209. package/generated/ControlSpecQuestionsRequest.schema.json +128 -2
  210. package/generated/ControlSpecSession.schema.json +249 -0
  211. package/generated/ControlSpecSessionListResponse.schema.json +261 -0
  212. package/generated/ControlThread.schema.json +20 -2
  213. package/generated/ControlThreadApplyResponse.schema.json +139 -0
  214. package/generated/ControlThreadDetail.schema.json +32 -4
  215. package/generated/ControlThreadListResponse.schema.json +20 -2
  216. package/generated/ControlThreadTurnRequest.schema.json +373 -0
  217. package/generated/ControlThreadTurnResponse.schema.json +73 -0
  218. package/generated/ControlThreadUpdateRequest.schema.json +1 -1
  219. package/generated/ControlTrustListResponse.schema.json +6 -0
  220. package/generated/ControlTrustState.schema.json +6 -0
  221. package/generated/ControlTrustUpdateRequest.schema.json +65 -3
  222. package/generated/ControlUploadCreateRequest.schema.json +37 -0
  223. package/generated/ControlUploadFinalizeRequest.schema.json +17 -0
  224. package/generated/ControlUploadStatus.schema.json +40 -0
  225. package/generated/DecisionRecord.schema.json +6 -3
  226. package/generated/GlobalConfig.schema.json +105 -58
  227. package/generated/HarnessEvent.schema.json +201 -10
  228. package/generated/HarnessManifest.schema.json +63 -12
  229. package/generated/HarnessStatusDto.schema.json +103 -12
  230. package/generated/OrchestrateContract.schema.json +32 -6
  231. package/generated/OrchestratePlan.schema.json +20 -0
  232. package/generated/OrchestratePlanProgress.schema.json +61 -0
  233. package/generated/PaidBudget.schema.json +42 -0
  234. package/generated/Project.schema.json +45 -0
  235. package/generated/ProjectConfig.schema.json +45 -18
  236. package/generated/RawContextPacket.schema.json +184 -0
  237. package/generated/RawGitPatchEnvelope.schema.json +70 -0
  238. package/generated/RunTelemetry.schema.json +80 -0
  239. package/generated/SecretMetadata.schema.json +4 -7
  240. package/generated/SpecPack.schema.json +118 -7
  241. package/generated/TaskContract.schema.json +159 -26
  242. package/generated/TestCommandInvocation.schema.json +45 -0
  243. package/generated/Thread.schema.json +62 -6
  244. package/generated/ThreadTurn.schema.json +24 -11
  245. package/generated/TrustConfig.schema.json +77 -0
  246. package/package.json +1 -1
  247. package/generated/ControlSetupJobConfirmRequest.schema.json +0 -18
  248. package/generated/ControlSpecFreezeRequest.schema.json +0 -83
@@ -0,0 +1,261 @@
1
+ {
2
+ "$ref": "#/definitions/ControlSpecSessionListResponse",
3
+ "definitions": {
4
+ "ControlSpecSessionListResponse": {
5
+ "type": "object",
6
+ "properties": {
7
+ "sessions": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "sessionId": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "pattern": "\\S",
16
+ "description": "User-supplied string that must contain visible content, not just whitespace."
17
+ },
18
+ "prompt": {
19
+ "type": "string"
20
+ },
21
+ "scope": {
22
+ "type": "object",
23
+ "properties": {
24
+ "kind": {
25
+ "type": "string",
26
+ "const": "project"
27
+ },
28
+ "root": {
29
+ "type": "string"
30
+ },
31
+ "context": {
32
+ "type": "string",
33
+ "enum": [
34
+ "auto"
35
+ ],
36
+ "description": "Project context depth; auto is the only mode."
37
+ }
38
+ },
39
+ "required": [
40
+ "kind",
41
+ "root",
42
+ "context"
43
+ ],
44
+ "additionalProperties": false
45
+ },
46
+ "state": {
47
+ "type": "string",
48
+ "enum": [
49
+ "grounding",
50
+ "questions",
51
+ "answered",
52
+ "freezing",
53
+ "frozen",
54
+ "cancelled",
55
+ "failed",
56
+ "interrupted_unknown"
57
+ ]
58
+ },
59
+ "planRunId": {
60
+ "type": [
61
+ "string",
62
+ "null"
63
+ ]
64
+ },
65
+ "questions": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "object",
69
+ "properties": {
70
+ "id": {
71
+ "type": "string",
72
+ "minLength": 1,
73
+ "description": "Question id."
74
+ },
75
+ "tier": {
76
+ "type": "integer",
77
+ "minimum": 0,
78
+ "default": 0,
79
+ "description": "Hierarchical depth of the question (0 = foundational)."
80
+ },
81
+ "prompt": {
82
+ "type": "string",
83
+ "description": "The question text shown to the user."
84
+ },
85
+ "kind": {
86
+ "type": "string",
87
+ "enum": [
88
+ "single",
89
+ "multi",
90
+ "text"
91
+ ],
92
+ "description": "Answer shape of an interview question: single choice, multiple choice, or free text.",
93
+ "default": "single"
94
+ },
95
+ "options": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "properties": {
100
+ "id": {
101
+ "type": "string",
102
+ "minLength": 1,
103
+ "description": "Option id."
104
+ },
105
+ "label": {
106
+ "type": "string",
107
+ "description": "Human-readable option label."
108
+ }
109
+ },
110
+ "required": [
111
+ "id",
112
+ "label"
113
+ ],
114
+ "additionalProperties": false,
115
+ "description": "One selectable option of an interview question."
116
+ },
117
+ "default": [],
118
+ "description": "Selectable options; empty for pure free-text questions."
119
+ },
120
+ "allow_text": {
121
+ "type": "boolean",
122
+ "default": false,
123
+ "description": "Whether free-text is accepted in addition to or instead of options."
124
+ },
125
+ "rationale": {
126
+ "type": "string",
127
+ "description": "Why this question matters for the spec."
128
+ }
129
+ },
130
+ "required": [
131
+ "id",
132
+ "prompt"
133
+ ],
134
+ "additionalProperties": false,
135
+ "description": "One quiz card of the spec interview."
136
+ }
137
+ },
138
+ "answers": {
139
+ "type": "array",
140
+ "items": {
141
+ "type": "object",
142
+ "properties": {
143
+ "question_id": {
144
+ "type": "string",
145
+ "minLength": 1,
146
+ "description": "Id of the question being answered."
147
+ },
148
+ "option_ids": {
149
+ "type": "array",
150
+ "items": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "description": "Non-empty identifier string."
154
+ },
155
+ "default": [],
156
+ "description": "Ids of the selected options."
157
+ },
158
+ "text": {
159
+ "type": [
160
+ "string",
161
+ "null"
162
+ ],
163
+ "default": null,
164
+ "description": "Free-text answer; null when only options were selected."
165
+ }
166
+ },
167
+ "required": [
168
+ "question_id"
169
+ ],
170
+ "additionalProperties": false,
171
+ "description": "The user's answer to one interview question."
172
+ }
173
+ },
174
+ "priorDecisions": {
175
+ "type": "array",
176
+ "items": {
177
+ "type": "object",
178
+ "properties": {
179
+ "question": {
180
+ "type": "string",
181
+ "description": "Question asked in a prior tier."
182
+ },
183
+ "answer": {
184
+ "type": "string",
185
+ "description": "The user's answer."
186
+ }
187
+ },
188
+ "required": [
189
+ "question",
190
+ "answer"
191
+ ],
192
+ "additionalProperties": false
193
+ }
194
+ },
195
+ "specId": {
196
+ "type": [
197
+ "string",
198
+ "null"
199
+ ]
200
+ },
201
+ "specDir": {
202
+ "type": [
203
+ "string",
204
+ "null"
205
+ ]
206
+ },
207
+ "specPath": {
208
+ "type": [
209
+ "string",
210
+ "null"
211
+ ]
212
+ },
213
+ "specHash": {
214
+ "type": [
215
+ "string",
216
+ "null"
217
+ ]
218
+ },
219
+ "error": {
220
+ "type": [
221
+ "string",
222
+ "null"
223
+ ]
224
+ },
225
+ "createdAt": {
226
+ "type": "string"
227
+ },
228
+ "updatedAt": {
229
+ "type": "string"
230
+ }
231
+ },
232
+ "required": [
233
+ "sessionId",
234
+ "prompt",
235
+ "scope",
236
+ "state",
237
+ "planRunId",
238
+ "questions",
239
+ "answers",
240
+ "priorDecisions",
241
+ "specId",
242
+ "specDir",
243
+ "specPath",
244
+ "specHash",
245
+ "error",
246
+ "createdAt",
247
+ "updatedAt"
248
+ ],
249
+ "additionalProperties": false,
250
+ "description": "Durable public projection of a spec interview session."
251
+ }
252
+ }
253
+ },
254
+ "required": [
255
+ "sessions"
256
+ ],
257
+ "additionalProperties": false
258
+ }
259
+ },
260
+ "$schema": "http://json-schema.org/draft-07/schema#"
261
+ }
@@ -75,11 +75,29 @@
75
75
  "type": "string",
76
76
  "enum": [
77
77
  "active",
78
- "closed"
78
+ "closed",
79
+ "trashed",
80
+ "purged"
79
81
  ],
80
- "description": "Thread lifecycle state: active or explicitly closed (archived). Blocked is a live projection, not a thread state.",
82
+ "description": "Thread lifecycle state: active, closed, trashed for recovery, or terminally purged.",
81
83
  "default": "active"
82
84
  },
85
+ "trashedAt": {
86
+ "type": [
87
+ "string",
88
+ "null"
89
+ ],
90
+ "default": null,
91
+ "description": "When the thread entered trash."
92
+ },
93
+ "purgeAfter": {
94
+ "type": [
95
+ "string",
96
+ "null"
97
+ ],
98
+ "default": null,
99
+ "description": "When trash retention expires."
100
+ },
83
101
  "runIds": {
84
102
  "type": "array",
85
103
  "items": {
@@ -33,6 +33,145 @@
33
33
  ],
34
34
  "default": null,
35
35
  "description": "Human-readable detail."
36
+ },
37
+ "delivery": {
38
+ "anyOf": [
39
+ {
40
+ "type": "object",
41
+ "properties": {
42
+ "mode": {
43
+ "type": "string",
44
+ "enum": [
45
+ "artifact_only",
46
+ "apply",
47
+ "branch",
48
+ "commit",
49
+ "pr"
50
+ ]
51
+ },
52
+ "applied": {
53
+ "type": "boolean"
54
+ },
55
+ "branch": {
56
+ "type": "string"
57
+ },
58
+ "commit": {
59
+ "type": "string"
60
+ },
61
+ "prUrl": {
62
+ "type": "string"
63
+ },
64
+ "detail": {
65
+ "type": "string"
66
+ },
67
+ "treeMutated": {
68
+ "type": "boolean"
69
+ },
70
+ "refused": {
71
+ "type": "boolean"
72
+ },
73
+ "finalVerify": {
74
+ "type": "object",
75
+ "properties": {
76
+ "attempted": {
77
+ "type": "boolean",
78
+ "description": "Whether the final verify was attempted."
79
+ },
80
+ "base_sha": {
81
+ "type": [
82
+ "string",
83
+ "null"
84
+ ],
85
+ "default": null,
86
+ "description": "Base SHA the verify tree was created from (the winner envelope's base)."
87
+ },
88
+ "applied_cleanly": {
89
+ "type": [
90
+ "boolean",
91
+ "null"
92
+ ],
93
+ "default": null,
94
+ "description": "Whether the patch applied cleanly onto the fresh tree; null when not attempted."
95
+ },
96
+ "gates_passed": {
97
+ "type": [
98
+ "boolean",
99
+ "null"
100
+ ],
101
+ "default": null,
102
+ "description": "Whether the re-run deterministic gates passed; null when not attempted."
103
+ },
104
+ "gates": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "object",
108
+ "properties": {
109
+ "id": {
110
+ "type": "string",
111
+ "description": "Gate id."
112
+ },
113
+ "status": {
114
+ "type": "string",
115
+ "description": "Gate status."
116
+ }
117
+ },
118
+ "required": [
119
+ "id",
120
+ "status"
121
+ ],
122
+ "additionalProperties": false
123
+ },
124
+ "default": [],
125
+ "description": "Per-gate re-run results."
126
+ },
127
+ "duration_ms": {
128
+ "anyOf": [
129
+ {
130
+ "type": "integer",
131
+ "minimum": 0
132
+ },
133
+ {
134
+ "type": "null"
135
+ }
136
+ ],
137
+ "default": null,
138
+ "description": "How long the verify took, in milliseconds."
139
+ },
140
+ "reason": {
141
+ "type": [
142
+ "string",
143
+ "null"
144
+ ],
145
+ "default": null,
146
+ "description": "Typed reason when attempted=false (e.g. no_patch, no_base_sha) or a failure detail."
147
+ }
148
+ },
149
+ "required": [
150
+ "attempted"
151
+ ],
152
+ "additionalProperties": false,
153
+ "description": "Fresh verifier evidence for this delivery attempt."
154
+ },
155
+ "targetPreimageSha": {
156
+ "type": "string",
157
+ "description": "Target snapshot verified immediately before delivery."
158
+ }
159
+ },
160
+ "required": [
161
+ "mode",
162
+ "applied",
163
+ "finalVerify",
164
+ "targetPreimageSha"
165
+ ],
166
+ "additionalProperties": false,
167
+ "description": "Immutable receipt for a freshly verified delivery attempt."
168
+ },
169
+ {
170
+ "type": "null"
171
+ }
172
+ ],
173
+ "description": "Fresh verifier, target preimage, and mutation receipt; null when no delivery ran.",
174
+ "default": null
36
175
  }
37
176
  },
38
177
  "required": [
@@ -78,11 +78,29 @@
78
78
  "type": "string",
79
79
  "enum": [
80
80
  "active",
81
- "closed"
81
+ "closed",
82
+ "trashed",
83
+ "purged"
82
84
  ],
83
- "description": "Thread lifecycle state: active or explicitly closed (archived). Blocked is a live projection, not a thread state.",
85
+ "description": "Thread lifecycle state: active, closed, trashed for recovery, or terminally purged.",
84
86
  "default": "active"
85
87
  },
88
+ "trashedAt": {
89
+ "type": [
90
+ "string",
91
+ "null"
92
+ ],
93
+ "default": null,
94
+ "description": "When the thread entered trash."
95
+ },
96
+ "purgeAfter": {
97
+ "type": [
98
+ "string",
99
+ "null"
100
+ ],
101
+ "default": null,
102
+ "description": "When trash retention expires."
103
+ },
86
104
  "runIds": {
87
105
  "type": "array",
88
106
  "items": {
@@ -268,12 +286,14 @@
268
286
  "review_not_run",
269
287
  "failed",
270
288
  "cancelled",
271
- "interrupted",
289
+ "interrupted_unknown",
290
+ "cost_unverifiable",
291
+ "exhausted_overshoot",
272
292
  "exhausted",
273
293
  "not_converged",
274
294
  "stuck_no_progress"
275
295
  ],
276
- "description": "Control-plane run state: queued/running while live; blocked awaiting a human; then a terminal outcome (succeeded, no_op, ungated, review_not_run, failed, cancelled, interrupted, exhausted, not_converged, stuck_no_progress)."
296
+ "description": "Control-plane run state: queued/running while live, then an honest success, block, failure, interruption, cost, exhaustion, non-convergence, or cancellation terminal."
277
297
  },
278
298
  "mode": {
279
299
  "$ref": "#/definitions/ControlThreadDetail/properties/thread/properties/mode",
@@ -392,6 +412,14 @@
392
412
  "default": null,
393
413
  "description": "Tree SHA right after this turn's mutation; revert refuses if the working tree has diverged from this since."
394
414
  },
415
+ "revertAnchorId": {
416
+ "type": [
417
+ "string",
418
+ "null"
419
+ ],
420
+ "default": null,
421
+ "description": "GC-independent revert anchor."
422
+ },
395
423
  "revertable": {
396
424
  "type": "boolean",
397
425
  "default": false,
@@ -80,11 +80,29 @@
80
80
  "type": "string",
81
81
  "enum": [
82
82
  "active",
83
- "closed"
83
+ "closed",
84
+ "trashed",
85
+ "purged"
84
86
  ],
85
- "description": "Thread lifecycle state: active or explicitly closed (archived). Blocked is a live projection, not a thread state.",
87
+ "description": "Thread lifecycle state: active, closed, trashed for recovery, or terminally purged.",
86
88
  "default": "active"
87
89
  },
90
+ "trashedAt": {
91
+ "type": [
92
+ "string",
93
+ "null"
94
+ ],
95
+ "default": null,
96
+ "description": "When the thread entered trash."
97
+ },
98
+ "purgeAfter": {
99
+ "type": [
100
+ "string",
101
+ "null"
102
+ ],
103
+ "default": null,
104
+ "description": "When trash retention expires."
105
+ },
88
106
  "runIds": {
89
107
  "type": "array",
90
108
  "items": {