@claudexor/schema 1.0.1 → 2.1.1

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 (278) hide show
  1. package/dist/agent-capabilities.d.ts +102 -30
  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 +117 -52
  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 +1444 -0
  13. package/dist/auth.d.ts.map +1 -0
  14. package/dist/auth.js +371 -0
  15. package/dist/auth.js.map +1 -0
  16. package/dist/budget.d.ts +147 -18
  17. package/dist/budget.d.ts.map +1 -1
  18. package/dist/budget.js +80 -22
  19. package/dist/budget.js.map +1 -1
  20. package/dist/config.d.ts +829 -135
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +195 -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-gc.d.ts +185 -0
  29. package/dist/control-gc.d.ts.map +1 -0
  30. package/dist/control-gc.js +81 -0
  31. package/dist/control-gc.js.map +1 -0
  32. package/dist/control-operation-responses.d.ts +1298 -0
  33. package/dist/control-operation-responses.d.ts.map +1 -0
  34. package/dist/control-operation-responses.js +35 -0
  35. package/dist/control-operation-responses.js.map +1 -0
  36. package/dist/control-run-detail.d.ts +556 -247
  37. package/dist/control-run-detail.d.ts.map +1 -1
  38. package/dist/control-run-detail.js +72 -17
  39. package/dist/control-run-detail.js.map +1 -1
  40. package/dist/control-run-retry.d.ts +88 -0
  41. package/dist/control-run-retry.d.ts.map +1 -0
  42. package/dist/control-run-retry.js +40 -0
  43. package/dist/control-run-retry.js.map +1 -0
  44. package/dist/control-run-scope.d.ts +25 -0
  45. package/dist/control-run-scope.d.ts.map +1 -0
  46. package/dist/control-run-scope.js +22 -0
  47. package/dist/control-run-scope.js.map +1 -0
  48. package/dist/control-secret.d.ts +90 -0
  49. package/dist/control-secret.d.ts.map +1 -0
  50. package/dist/control-secret.js +35 -0
  51. package/dist/control-secret.js.map +1 -0
  52. package/dist/control-spec.d.ts +592 -0
  53. package/dist/control-spec.d.ts.map +1 -0
  54. package/dist/control-spec.js +85 -0
  55. package/dist/control-spec.js.map +1 -0
  56. package/dist/control-thread-apply.d.ts +175 -0
  57. package/dist/control-thread-apply.d.ts.map +1 -0
  58. package/dist/control-thread-apply.js +31 -0
  59. package/dist/control-thread-apply.js.map +1 -0
  60. package/dist/control-trust.d.ts +74 -10
  61. package/dist/control-trust.d.ts.map +1 -1
  62. package/dist/control-trust.js +31 -11
  63. package/dist/control-trust.js.map +1 -1
  64. package/dist/control.d.ts +1688 -1334
  65. package/dist/control.d.ts.map +1 -1
  66. package/dist/control.js +592 -333
  67. package/dist/control.js.map +1 -1
  68. package/dist/credential-profile.d.ts +454 -0
  69. package/dist/credential-profile.d.ts.map +1 -0
  70. package/dist/credential-profile.js +140 -0
  71. package/dist/credential-profile.js.map +1 -0
  72. package/dist/decision.d.ts +10 -10
  73. package/dist/decision.d.ts.map +1 -1
  74. package/dist/decision.js +62 -15
  75. package/dist/decision.js.map +1 -1
  76. package/dist/delivery.d.ts +99 -0
  77. package/dist/delivery.d.ts.map +1 -0
  78. package/dist/delivery.js +19 -0
  79. package/dist/delivery.js.map +1 -0
  80. package/dist/events.d.ts +41 -4
  81. package/dist/events.d.ts.map +1 -1
  82. package/dist/events.js +47 -4
  83. package/dist/events.js.map +1 -1
  84. package/dist/gate.d.ts +5 -5
  85. package/dist/gate.d.ts.map +1 -1
  86. package/dist/gate.js +25 -5
  87. package/dist/gate.js.map +1 -1
  88. package/dist/harness.d.ts +775 -237
  89. package/dist/harness.d.ts.map +1 -1
  90. package/dist/harness.js +314 -111
  91. package/dist/harness.js.map +1 -1
  92. package/dist/index.d.ts +19 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +19 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/operation.d.ts +185 -0
  97. package/dist/operation.d.ts.map +1 -0
  98. package/dist/operation.js +50 -0
  99. package/dist/operation.js.map +1 -0
  100. package/dist/orchestrate.d.ts +150 -22
  101. package/dist/orchestrate.d.ts.map +1 -1
  102. package/dist/orchestrate.js +117 -7
  103. package/dist/orchestrate.js.map +1 -1
  104. package/dist/primitives.d.ts.map +1 -1
  105. package/dist/primitives.js +4 -1
  106. package/dist/primitives.js.map +1 -1
  107. package/dist/problem.d.ts +29 -0
  108. package/dist/problem.d.ts.map +1 -0
  109. package/dist/problem.js +17 -0
  110. package/dist/problem.js.map +1 -0
  111. package/dist/project.d.ts +97 -0
  112. package/dist/project.d.ts.map +1 -0
  113. package/dist/project.js +27 -0
  114. package/dist/project.js.map +1 -0
  115. package/dist/quota.d.ts +269 -0
  116. package/dist/quota.d.ts.map +1 -0
  117. package/dist/quota.js +58 -0
  118. package/dist/quota.js.map +1 -0
  119. package/dist/raw.d.ts +195 -0
  120. package/dist/raw.d.ts.map +1 -0
  121. package/dist/raw.js +58 -0
  122. package/dist/raw.js.map +1 -0
  123. package/dist/readiness.d.ts +596 -0
  124. package/dist/readiness.d.ts.map +1 -0
  125. package/dist/readiness.js +87 -0
  126. package/dist/readiness.js.map +1 -0
  127. package/dist/recovery.d.ts +515 -0
  128. package/dist/recovery.d.ts.map +1 -0
  129. package/dist/recovery.js +93 -0
  130. package/dist/recovery.js.map +1 -0
  131. package/dist/request-requirements.d.ts +36 -0
  132. package/dist/request-requirements.d.ts.map +1 -0
  133. package/dist/request-requirements.js +29 -0
  134. package/dist/request-requirements.js.map +1 -0
  135. package/dist/review.d.ts +26 -26
  136. package/dist/review.d.ts.map +1 -1
  137. package/dist/review.js +50 -10
  138. package/dist/review.js.map +1 -1
  139. package/dist/route.d.ts +13 -13
  140. package/dist/route.d.ts.map +1 -1
  141. package/dist/route.js +19 -4
  142. package/dist/route.js.map +1 -1
  143. package/dist/setup.d.ts +9811 -0
  144. package/dist/setup.d.ts.map +1 -0
  145. package/dist/setup.js +475 -0
  146. package/dist/setup.js.map +1 -0
  147. package/dist/spec.d.ts +178 -61
  148. package/dist/spec.d.ts.map +1 -1
  149. package/dist/spec.js +69 -16
  150. package/dist/spec.js.map +1 -1
  151. package/dist/surface-run-controls.d.ts.map +1 -1
  152. package/dist/surface-run-controls.js +25 -21
  153. package/dist/surface-run-controls.js.map +1 -1
  154. package/dist/task.d.ts +1657 -60
  155. package/dist/task.d.ts.map +1 -1
  156. package/dist/task.js +144 -18
  157. package/dist/task.js.map +1 -1
  158. package/dist/telemetry.d.ts +487 -72
  159. package/dist/telemetry.d.ts.map +1 -1
  160. package/dist/telemetry.js +194 -16
  161. package/dist/telemetry.js.map +1 -1
  162. package/dist/thread.d.ts +89 -51
  163. package/dist/thread.d.ts.map +1 -1
  164. package/dist/thread.js +56 -11
  165. package/dist/thread.js.map +1 -1
  166. package/dist/tool-ref.d.ts +45 -0
  167. package/dist/tool-ref.d.ts.map +1 -0
  168. package/dist/tool-ref.js +45 -0
  169. package/dist/tool-ref.js.map +1 -0
  170. package/dist/workproduct.d.ts +3 -3
  171. package/dist/workproduct.d.ts.map +1 -1
  172. package/dist/workproduct.js.map +1 -1
  173. package/dist/workspace.d.ts +3 -3
  174. package/dist/workspace.d.ts.map +1 -1
  175. package/dist/workspace.js +12 -3
  176. package/dist/workspace.js.map +1 -1
  177. package/generated/AgentCapabilityCatalog.schema.json +53 -11
  178. package/generated/BudgetLease.schema.json +55 -6
  179. package/generated/BudgetObservation.schema.json +44 -7
  180. package/generated/ConformanceReport.schema.json +49 -0
  181. package/generated/ControlApplyCheckResponse.schema.json +34 -0
  182. package/generated/ControlArtifactListResponse.schema.json +57 -0
  183. package/generated/ControlAuthReadinessRefreshRequest.schema.json +38 -0
  184. package/generated/ControlAuthReadinessRefreshResponse.schema.json +85 -0
  185. package/generated/ControlCredentialProfileCreateRequest.schema.json +32 -0
  186. package/generated/ControlCredentialProfileCreateResponse.schema.json +142 -0
  187. package/generated/ControlCredentialProfileDeleteResponse.schema.json +107 -0
  188. package/generated/ControlCredentialProfilesResponse.schema.json +155 -0
  189. package/generated/ControlDeliveryResponse.schema.json +136 -0
  190. package/generated/ControlGcReceipt.schema.json +170 -0
  191. package/generated/ControlGcRequest.schema.json +18 -0
  192. package/generated/ControlHandshakeRequest.schema.json +26 -0
  193. package/generated/ControlHandshakeResponse.schema.json +30 -0
  194. package/generated/ControlHarnessListResponse.schema.json +198 -14
  195. package/generated/ControlHarnessModelsResponse.schema.json +19 -0
  196. package/generated/ControlHarnessSettingsPatch.schema.json +9 -12
  197. package/generated/ControlJournalEvent.schema.json +42 -0
  198. package/generated/ControlJournalExportReceipt.schema.json +49 -0
  199. package/generated/ControlJournalInspection.schema.json +149 -0
  200. package/generated/ControlJournalQuarantineReceipt.schema.json +55 -0
  201. package/generated/ControlJournalQuarantineRequest.schema.json +24 -0
  202. package/generated/ControlJournalValidation.schema.json +181 -0
  203. package/generated/ControlOperationCatalog.schema.json +128 -0
  204. package/generated/ControlOperationDescriptor.schema.json +110 -0
  205. package/generated/ControlProblem.schema.json +59 -0
  206. package/generated/ControlProject.schema.json +42 -0
  207. package/generated/ControlProjectListResponse.schema.json +54 -0
  208. package/generated/ControlProjectRegisterRequest.schema.json +19 -0
  209. package/generated/ControlProjectRelinkRequest.schema.json +19 -0
  210. package/generated/ControlQueuedRunInfo.schema.json +4 -2
  211. package/generated/ControlQuotaResponse.schema.json +177 -0
  212. package/generated/ControlResource.schema.json +59 -0
  213. package/generated/ControlRunAgainDraft.schema.json +539 -0
  214. package/generated/ControlRunDetail.schema.json +373 -34
  215. package/generated/ControlRunListResponse.schema.json +968 -0
  216. package/generated/ControlRunRetryResponse.schema.json +54 -0
  217. package/generated/ControlRunStartRequest.schema.json +123 -55
  218. package/generated/ControlRunStartResponse.schema.json +78 -0
  219. package/generated/ControlRunSummary.schema.json +312 -21
  220. package/generated/ControlSecretListResponse.schema.json +8 -14
  221. package/generated/ControlSecretMutationResponse.schema.json +32 -0
  222. package/generated/ControlSecretSetRequest.schema.json +27 -0
  223. package/generated/ControlSettingsSnapshot.schema.json +128 -44
  224. package/generated/ControlSettingsUpdateRequest.schema.json +119 -40
  225. package/generated/ControlSetupJob.schema.json +770 -64
  226. package/generated/ControlSetupJobCreateRequest.schema.json +16 -13
  227. package/generated/ControlSetupJobEvent.schema.json +869 -5
  228. package/generated/ControlSetupJobListFilter.schema.json +35 -0
  229. package/generated/ControlSetupJobListResponse.schema.json +770 -64
  230. package/generated/ControlSetupJobSnapshot.schema.json +878 -0
  231. package/generated/ControlSpecAnswersRequest.schema.json +74 -0
  232. package/generated/ControlSpecQuestionsRequest.schema.json +128 -2
  233. package/generated/ControlSpecSession.schema.json +249 -0
  234. package/generated/ControlSpecSessionListResponse.schema.json +261 -0
  235. package/generated/ControlThread.schema.json +36 -6
  236. package/generated/ControlThreadApplyResponse.schema.json +139 -0
  237. package/generated/ControlThreadCreateRequest.schema.json +6 -2
  238. package/generated/ControlThreadDetail.schema.json +64 -12
  239. package/generated/ControlThreadListResponse.schema.json +36 -6
  240. package/generated/ControlThreadTurnRequest.schema.json +413 -0
  241. package/generated/ControlThreadTurnResponse.schema.json +73 -0
  242. package/generated/ControlThreadUpdateRequest.schema.json +12 -1
  243. package/generated/ControlTrustListResponse.schema.json +6 -0
  244. package/generated/ControlTrustState.schema.json +6 -0
  245. package/generated/ControlTrustUpdateRequest.schema.json +65 -3
  246. package/generated/ControlUploadCreateRequest.schema.json +37 -0
  247. package/generated/ControlUploadFinalizeRequest.schema.json +17 -0
  248. package/generated/ControlUploadStatus.schema.json +40 -0
  249. package/generated/CredentialProfile.schema.json +78 -0
  250. package/generated/CredentialProfileStatus.schema.json +61 -0
  251. package/generated/DecisionRecord.schema.json +6 -3
  252. package/generated/GlobalConfig.schema.json +238 -55
  253. package/generated/HarnessEvent.schema.json +259 -11
  254. package/generated/HarnessManifest.schema.json +96 -14
  255. package/generated/HarnessModel.schema.json +19 -0
  256. package/generated/HarnessStatusDto.schema.json +198 -14
  257. package/generated/OrchestrateContract.schema.json +32 -6
  258. package/generated/OrchestratePlan.schema.json +20 -0
  259. package/generated/OrchestratePlanProgress.schema.json +61 -0
  260. package/generated/PaidBudget.schema.json +42 -0
  261. package/generated/Project.schema.json +45 -0
  262. package/generated/ProjectConfig.schema.json +45 -18
  263. package/generated/RawContextPacket.schema.json +184 -0
  264. package/generated/RawGitPatchEnvelope.schema.json +70 -0
  265. package/generated/RunEvent.schema.json +3 -0
  266. package/generated/RunTelemetry.schema.json +280 -0
  267. package/generated/SecretMetadata.schema.json +4 -7
  268. package/generated/Session.schema.json +14 -0
  269. package/generated/SpecPack.schema.json +118 -7
  270. package/generated/TaskContract.schema.json +224 -30
  271. package/generated/TestCommandInvocation.schema.json +45 -0
  272. package/generated/Thread.schema.json +74 -6
  273. package/generated/ThreadHeadPing.schema.json +40 -0
  274. package/generated/ThreadTurn.schema.json +24 -11
  275. package/generated/TrustConfig.schema.json +77 -0
  276. package/package.json +3 -2
  277. package/generated/ControlSetupJobConfirmRequest.schema.json +0 -18
  278. package/generated/ControlSpecFreezeRequest.schema.json +0 -83
@@ -31,12 +31,14 @@
31
31
  "review_not_run",
32
32
  "failed",
33
33
  "cancelled",
34
- "interrupted",
34
+ "interrupted_unknown",
35
+ "cost_unverifiable",
36
+ "exhausted_overshoot",
35
37
  "exhausted",
36
38
  "not_converged",
37
39
  "stuck_no_progress"
38
40
  ],
39
- "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)."
41
+ "description": "Control-plane run state: queued/running while live, then an honest success, block, failure, interruption, cost, exhaustion, non-convergence, or cancellation terminal."
40
42
  },
41
43
  "runDir": {
42
44
  "type": "string",
@@ -233,20 +235,14 @@
233
235
  "type": "string",
234
236
  "description": "Primary harness the run preferred."
235
237
  },
236
- "portfolio": {
238
+ "routingGoal": {
237
239
  "type": "string",
238
240
  "enum": [
239
- "daily-rich",
240
- "balanced",
241
- "cheapest",
242
- "strongest",
243
- "burn",
244
- "subscription-first",
245
- "api-overflow",
246
- "conserve-claude",
247
- "conserve-codex"
241
+ "auto",
242
+ "quality",
243
+ "economy"
248
244
  ],
249
- "description": "Budget portfolio weighting the harness router's quality/cost/latency and subscription-vs-API preferences (e.g. cheapest minimizes spend, burn maximizes quality, conserve-* deprioritizes one vendor)."
245
+ "description": "Routing objective: pace expiring quota, choose the highest declared quality tier, or minimize incremental paid spend."
250
246
  },
251
247
  "model": {
252
248
  "type": "string",
@@ -317,24 +313,220 @@
317
313
  "type": "integer",
318
314
  "description": "Race width, when the run was a race."
319
315
  },
320
- "maxUsd": {
321
- "type": [
322
- "number",
323
- "null"
316
+ "paidBudget": {
317
+ "anyOf": [
318
+ {
319
+ "type": "object",
320
+ "properties": {
321
+ "kind": {
322
+ "type": "string",
323
+ "const": "unlimited"
324
+ }
325
+ },
326
+ "required": [
327
+ "kind"
328
+ ],
329
+ "additionalProperties": false
330
+ },
331
+ {
332
+ "type": "object",
333
+ "properties": {
334
+ "kind": {
335
+ "type": "string",
336
+ "const": "finite"
337
+ },
338
+ "maxUsd": {
339
+ "type": "number",
340
+ "minimum": 0
341
+ }
342
+ },
343
+ "required": [
344
+ "kind",
345
+ "maxUsd"
346
+ ],
347
+ "additionalProperties": false
348
+ }
324
349
  ],
325
- "description": "USD cap for the run; null = no cap."
350
+ "description": "Explicit incremental-cash budget for the run."
326
351
  },
327
352
  "spendUsd": {
328
353
  "type": [
329
354
  "number",
330
355
  "null"
331
356
  ],
332
- "description": "Settled spend in USD; null when unknown."
357
+ "description": "Settled cash in USD; null when unknown."
333
358
  },
334
359
  "spendEstimated": {
335
360
  "type": "boolean",
336
361
  "description": "True when spend is token-derived rather than natively reported."
337
362
  },
363
+ "inputTokens": {
364
+ "anyOf": [
365
+ {
366
+ "type": "integer",
367
+ "minimum": 0
368
+ },
369
+ {
370
+ "type": "null"
371
+ }
372
+ ],
373
+ "description": "Input tokens summed across all attempts; null when no harness reported them."
374
+ },
375
+ "outputTokens": {
376
+ "anyOf": [
377
+ {
378
+ "type": "integer",
379
+ "minimum": 0
380
+ },
381
+ {
382
+ "type": "null"
383
+ }
384
+ ],
385
+ "description": "Output tokens summed across all attempts; null when no harness reported them."
386
+ },
387
+ "cachedInputTokens": {
388
+ "anyOf": [
389
+ {
390
+ "type": "integer",
391
+ "minimum": 0
392
+ },
393
+ {
394
+ "type": "null"
395
+ }
396
+ ],
397
+ "description": "Cached input tokens summed across all attempts; null when no harness reported them."
398
+ },
399
+ "outputConformance": {
400
+ "anyOf": [
401
+ {
402
+ "type": "string",
403
+ "enum": [
404
+ "passed",
405
+ "failed"
406
+ ]
407
+ },
408
+ {
409
+ "type": "null"
410
+ }
411
+ ],
412
+ "description": "Structured-output conformance receipt (passed/failed); null when the run had no outputSchema."
413
+ },
414
+ "authRoute": {
415
+ "anyOf": [
416
+ {
417
+ "type": "object",
418
+ "properties": {
419
+ "requested": {
420
+ "type": "string",
421
+ "enum": [
422
+ "subscription",
423
+ "api_key",
424
+ "auto"
425
+ ],
426
+ "description": "Preferred auth route: subscription (native/OAuth session), api_key (a stored API key), or auto (engine picks subscription-first with policy fallback). A preference, not a secret."
427
+ },
428
+ "effective": {
429
+ "anyOf": [
430
+ {
431
+ "type": "string",
432
+ "enum": [
433
+ "local_session",
434
+ "api_key",
435
+ "unknown"
436
+ ],
437
+ "description": "Auth mode a route runs under: a native local session, an API key, or unknown."
438
+ },
439
+ {
440
+ "type": "null"
441
+ }
442
+ ],
443
+ "description": "Auth mode a route runs under: a native local session, an API key, or unknown.",
444
+ "default": null
445
+ },
446
+ "source": {
447
+ "anyOf": [
448
+ {
449
+ "type": "string",
450
+ "enum": [
451
+ "native_session",
452
+ "oauth_token_env",
453
+ "api_key_env",
454
+ "api_key_flag",
455
+ "provider_auth_file",
456
+ "none"
457
+ ],
458
+ "description": "Concrete credential source used or probed by a harness."
459
+ },
460
+ {
461
+ "type": "null"
462
+ }
463
+ ],
464
+ "description": "Concrete credential source used or probed by a harness.",
465
+ "default": null
466
+ },
467
+ "reason": {
468
+ "type": "string",
469
+ "enum": [
470
+ "as_requested",
471
+ "native_first",
472
+ "no_native_session_fallback",
473
+ "requested_route_unavailable",
474
+ "undisclosed"
475
+ ],
476
+ "description": "Deterministic reason for the effective auth route: as_requested, native_first (auto, INV-061), no_native_session_fallback (auto downgraded to api_key), requested_route_unavailable (explicit preference contradicted), or undisclosed."
477
+ },
478
+ "harnessId": {
479
+ "type": [
480
+ "string",
481
+ "null"
482
+ ],
483
+ "default": null
484
+ },
485
+ "attemptId": {
486
+ "type": [
487
+ "string",
488
+ "null"
489
+ ],
490
+ "default": null
491
+ },
492
+ "modelMismatch": {
493
+ "anyOf": [
494
+ {
495
+ "type": "object",
496
+ "properties": {
497
+ "requested": {
498
+ "type": "string"
499
+ },
500
+ "observed": {
501
+ "type": "string"
502
+ }
503
+ },
504
+ "required": [
505
+ "requested",
506
+ "observed"
507
+ ],
508
+ "additionalProperties": false
509
+ },
510
+ {
511
+ "type": "null"
512
+ }
513
+ ],
514
+ "default": null,
515
+ "description": "Requested-vs-observed model mismatch; null when none."
516
+ }
517
+ },
518
+ "required": [
519
+ "requested",
520
+ "reason"
521
+ ],
522
+ "additionalProperties": false
523
+ },
524
+ {
525
+ "type": "null"
526
+ }
527
+ ],
528
+ "description": "Auth route receipt (requested/effective/source/reason + disclosing attempt), projected verbatim from telemetry; null when unavailable."
529
+ },
338
530
  "access": {
339
531
  "type": "string",
340
532
  "enum": [
@@ -454,6 +646,64 @@
454
646
  "description": "Web evidence projected onto a run summary from the telemetry artifact.",
455
647
  "default": {}
456
648
  },
649
+ "requestRequirements": {
650
+ "type": "array",
651
+ "items": {
652
+ "type": "object",
653
+ "properties": {
654
+ "capability": {
655
+ "type": "string",
656
+ "enum": [
657
+ "browser",
658
+ "path_deny"
659
+ ]
660
+ },
661
+ "harness_id": {
662
+ "type": "string",
663
+ "minLength": 1
664
+ },
665
+ "eligible": {
666
+ "type": "boolean"
667
+ },
668
+ "requested": {
669
+ "type": "boolean"
670
+ },
671
+ "effective": {
672
+ "type": "boolean"
673
+ },
674
+ "reason": {
675
+ "type": "string",
676
+ "enum": [
677
+ "not_requested",
678
+ "effective",
679
+ "manifest_unsupported",
680
+ "web_policy_off",
681
+ "access_profile_incompatible",
682
+ "postdiff_only"
683
+ ]
684
+ },
685
+ "evidence_refs": {
686
+ "type": "array",
687
+ "items": {
688
+ "type": "string"
689
+ },
690
+ "default": []
691
+ }
692
+ },
693
+ "required": [
694
+ "capability",
695
+ "harness_id",
696
+ "eligible",
697
+ "requested",
698
+ "effective",
699
+ "reason"
700
+ ],
701
+ "additionalProperties": false,
702
+ "description": "Preflight resolution of one requested capability on one selected harness lane."
703
+ },
704
+ "default": [],
705
+ "description": "Engine-computed requested/effective capability receipts for selected harness lanes."
706
+ },
457
707
  "toolPermissionPolicy": {
458
708
  "type": "object",
459
709
  "additionalProperties": {},
@@ -567,6 +817,14 @@
567
817
  "default": null,
568
818
  "description": "Tree SHA right after this turn's mutation; revert refuses if the working tree has diverged from this since."
569
819
  },
820
+ "revertAnchorId": {
821
+ "type": [
822
+ "string",
823
+ "null"
824
+ ],
825
+ "default": null,
826
+ "description": "GC-independent revert anchor."
827
+ },
570
828
  "revertable": {
571
829
  "type": "boolean",
572
830
  "default": false,
@@ -630,9 +888,42 @@
630
888
  "tests": {
631
889
  "type": "array",
632
890
  "items": {
633
- "type": "string"
891
+ "type": "object",
892
+ "properties": {
893
+ "program": {
894
+ "type": "string",
895
+ "minLength": 1,
896
+ "pattern": "\\S",
897
+ "description": "Executable invoked directly without an implicit shell."
898
+ },
899
+ "args": {
900
+ "type": "array",
901
+ "items": {
902
+ "type": "string"
903
+ },
904
+ "default": [],
905
+ "description": "Exact argv passed to the executable."
906
+ },
907
+ "cwd": {
908
+ "type": "string",
909
+ "description": "Optional project-relative working directory for the command."
910
+ },
911
+ "envAllowlist": {
912
+ "type": "array",
913
+ "items": {
914
+ "$ref": "#/definitions/ControlRunDetail/properties/summary/properties/reviewerPanel/items/properties/model"
915
+ },
916
+ "default": [],
917
+ "description": "Non-secret parent environment names explicitly forwarded to the command."
918
+ }
919
+ },
920
+ "required": [
921
+ "program"
922
+ ],
923
+ "additionalProperties": false,
924
+ "description": "Canonical deterministic command invocation; no implicit shell parsing."
634
925
  },
635
- "description": "Test commands configured as gates."
926
+ "description": "Typed argv gates."
636
927
  },
637
928
  "specId": {
638
929
  "type": "string",
@@ -720,9 +1011,10 @@
720
1011
  "plan",
721
1012
  "summary",
722
1013
  "patch",
723
- "diagnostic"
1014
+ "diagnostic",
1015
+ "structured_output"
724
1016
  ],
725
- "description": "What kind of output this is: answer, report, plan, summary, patch, or diagnostic."
1017
+ "description": "What kind of output this is: answer, report, plan, summary, patch, diagnostic, or structured_output (schema-conformant final/output.json)."
726
1018
  },
727
1019
  "path": {
728
1020
  "type": "string",
@@ -853,13 +1145,12 @@
853
1145
  "budget": {
854
1146
  "type": "object",
855
1147
  "properties": {
856
- "maxUsd": {
857
- "type": [
858
- "number",
859
- "null"
860
- ],
861
- "default": null,
862
- "description": "USD cap for the run; null = no cap."
1148
+ "paidBudget": {
1149
+ "$ref": "#/definitions/ControlRunDetail/properties/summary/properties/paidBudget",
1150
+ "default": {
1151
+ "kind": "unlimited"
1152
+ },
1153
+ "description": "Incremental-cash budget: explicitly unlimited or a finite non-negative USD cap."
863
1154
  },
864
1155
  "spendUsd": {
865
1156
  "type": [
@@ -867,7 +1158,7 @@
867
1158
  "null"
868
1159
  ],
869
1160
  "default": null,
870
- "description": "Spend so far in USD; null when unknown."
1161
+ "description": "CASH spend so far in USD; null when unknown."
871
1162
  },
872
1163
  "remainingUsd": {
873
1164
  "type": [
@@ -932,13 +1223,16 @@
932
1223
  "ungated",
933
1224
  "review_not_run",
934
1225
  "blocked",
935
- "not_converged",
936
- "stuck_no_progress",
937
1226
  "failed",
1227
+ "interrupted_unknown",
1228
+ "cost_unverifiable",
1229
+ "exhausted_overshoot",
938
1230
  "exhausted",
1231
+ "not_converged",
1232
+ "stuck_no_progress",
939
1233
  "cancelled"
940
1234
  ],
941
- "description": "Terminal status of a run: success, no_op (nothing to change), ungated (no gates configured), review_not_run, blocked (accepted blocking findings), not_converged, stuck_no_progress, failed, exhausted (attempt/budget caps), or cancelled."
1235
+ "description": "Terminal status of a run, including truthful blocked, interrupted-unknown, cost-unverifiable, overshoot, exhaustion, non-convergence, failure, and cancellation outcomes."
942
1236
  },
943
1237
  "outcome": {
944
1238
  "type": "string",
@@ -1678,6 +1972,51 @@
1678
1972
  ],
1679
1973
  "description": "Executor status of one plan step: pending, running, done, skipped, blocked (risky step awaiting a human), or failed."
1680
1974
  },
1975
+ "required": {
1976
+ "type": "boolean",
1977
+ "default": true
1978
+ },
1979
+ "terminal_status": {
1980
+ "anyOf": [
1981
+ {
1982
+ "$ref": "#/definitions/ControlRunDetail/properties/decision/anyOf/0/properties/status"
1983
+ },
1984
+ {
1985
+ "type": "null"
1986
+ }
1987
+ ],
1988
+ "description": "Actual child/delivery terminal used by the parent outcome reducer.",
1989
+ "default": null
1990
+ },
1991
+ "terminal_source": {
1992
+ "anyOf": [
1993
+ {
1994
+ "type": "string",
1995
+ "enum": [
1996
+ "executor",
1997
+ "subrun",
1998
+ "review",
1999
+ "delivery",
2000
+ "policy",
2001
+ "budget"
2002
+ ]
2003
+ },
2004
+ {
2005
+ "type": "null"
2006
+ }
2007
+ ],
2008
+ "default": null,
2009
+ "description": "Authority that produced terminal_status."
2010
+ },
2011
+ "evidence_refs": {
2012
+ "type": "array",
2013
+ "items": {
2014
+ "type": "string",
2015
+ "minLength": 1
2016
+ },
2017
+ "default": [],
2018
+ "description": "Immutable run artifact or delivery receipt references."
2019
+ },
1681
2020
  "run_id": {
1682
2021
  "type": [
1683
2022
  "string",