@claudexor/schema 2.1.3 → 3.0.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 (174) hide show
  1. package/dist/agent-capabilities.d.ts +32 -24
  2. package/dist/agent-capabilities.d.ts.map +1 -1
  3. package/dist/agent-capabilities.js +20 -11
  4. package/dist/agent-capabilities.js.map +1 -1
  5. package/dist/apply-eligibility.d.ts +166 -0
  6. package/dist/apply-eligibility.d.ts.map +1 -1
  7. package/dist/apply-eligibility.js +63 -2
  8. package/dist/apply-eligibility.js.map +1 -1
  9. package/dist/attachment.d.ts +5 -5
  10. package/dist/budget.d.ts +4 -4
  11. package/dist/config.d.ts +59 -41
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +16 -6
  14. package/dist/config.js.map +1 -1
  15. package/dist/context.d.ts +6 -6
  16. package/dist/control-operation-responses.d.ts +190 -97
  17. package/dist/control-operation-responses.d.ts.map +1 -1
  18. package/dist/control-operation-responses.js +14 -1
  19. package/dist/control-operation-responses.js.map +1 -1
  20. package/dist/control-run-detail.d.ts +347 -215
  21. package/dist/control-run-detail.d.ts.map +1 -1
  22. package/dist/control-run-detail.js +34 -7
  23. package/dist/control-run-detail.js.map +1 -1
  24. package/dist/control-thread-apply.d.ts +5 -5
  25. package/dist/control-trust.d.ts +6 -6
  26. package/dist/control.d.ts +769 -306
  27. package/dist/control.d.ts.map +1 -1
  28. package/dist/control.js +164 -61
  29. package/dist/control.js.map +1 -1
  30. package/dist/credential-profile.d.ts +400 -1
  31. package/dist/credential-profile.d.ts.map +1 -1
  32. package/dist/credential-profile.js +109 -4
  33. package/dist/credential-profile.js.map +1 -1
  34. package/dist/decision.d.ts +78 -14
  35. package/dist/decision.d.ts.map +1 -1
  36. package/dist/decision.js +53 -20
  37. package/dist/decision.js.map +1 -1
  38. package/dist/delivery.d.ts +3 -3
  39. package/dist/delivery.js +1 -1
  40. package/dist/delivery.js.map +1 -1
  41. package/dist/events.d.ts +32 -6
  42. package/dist/events.d.ts.map +1 -1
  43. package/dist/events.js +45 -11
  44. package/dist/events.js.map +1 -1
  45. package/dist/gate.d.ts +4 -4
  46. package/dist/gate.d.ts.map +1 -1
  47. package/dist/gate.js +2 -2
  48. package/dist/gate.js.map +1 -1
  49. package/dist/harness.d.ts +137 -47
  50. package/dist/harness.d.ts.map +1 -1
  51. package/dist/harness.js +65 -16
  52. package/dist/harness.js.map +1 -1
  53. package/dist/index.d.ts +4 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +4 -3
  56. package/dist/index.js.map +1 -1
  57. package/dist/operation.d.ts +66 -7
  58. package/dist/operation.d.ts.map +1 -1
  59. package/dist/operation.js +29 -2
  60. package/dist/operation.js.map +1 -1
  61. package/dist/output-schema.d.ts +40 -0
  62. package/dist/output-schema.d.ts.map +1 -0
  63. package/dist/output-schema.js +109 -0
  64. package/dist/output-schema.js.map +1 -0
  65. package/dist/plan.d.ts +206 -0
  66. package/dist/plan.d.ts.map +1 -0
  67. package/dist/plan.js +107 -0
  68. package/dist/plan.js.map +1 -0
  69. package/dist/primitives.d.ts +14 -10
  70. package/dist/primitives.d.ts.map +1 -1
  71. package/dist/primitives.js +14 -11
  72. package/dist/primitives.js.map +1 -1
  73. package/dist/project.d.ts +75 -0
  74. package/dist/project.d.ts.map +1 -1
  75. package/dist/project.js +17 -0
  76. package/dist/project.js.map +1 -1
  77. package/dist/quota.d.ts +119 -0
  78. package/dist/quota.d.ts.map +1 -1
  79. package/dist/quota.js +22 -0
  80. package/dist/quota.js.map +1 -1
  81. package/dist/raw.d.ts +4 -4
  82. package/dist/readiness.d.ts +14 -7
  83. package/dist/readiness.d.ts.map +1 -1
  84. package/dist/run-strategy.d.ts +17 -0
  85. package/dist/run-strategy.d.ts.map +1 -0
  86. package/dist/run-strategy.js +47 -0
  87. package/dist/run-strategy.js.map +1 -0
  88. package/dist/setup.d.ts +160 -160
  89. package/dist/status-projection.d.ts +78 -0
  90. package/dist/status-projection.d.ts.map +1 -0
  91. package/dist/status-projection.js +171 -0
  92. package/dist/status-projection.js.map +1 -0
  93. package/dist/task.d.ts +48 -316
  94. package/dist/task.d.ts.map +1 -1
  95. package/dist/task.js +3 -60
  96. package/dist/task.js.map +1 -1
  97. package/dist/telemetry.d.ts +89 -89
  98. package/dist/thread.d.ts +167 -32
  99. package/dist/thread.d.ts.map +1 -1
  100. package/dist/thread.js +92 -28
  101. package/dist/thread.js.map +1 -1
  102. package/dist/tool-ref.d.ts +1 -1
  103. package/generated/AgentCapabilityCatalog.schema.json +4 -6
  104. package/generated/ApplyEligibility.schema.json +1 -1
  105. package/generated/BudgetLease.schema.json +1 -2
  106. package/generated/ConformanceReport.schema.json +1 -2
  107. package/generated/ContinuityDisclosure.schema.json +74 -0
  108. package/generated/ControlApplyRequest.schema.json +1 -2
  109. package/generated/ControlCredentialProfileUpdateRequest.schema.json +20 -0
  110. package/generated/ControlCredentialProfileUpdateResponse.schema.json +142 -0
  111. package/generated/ControlCredentialProfilesResponse.schema.json +126 -2
  112. package/generated/ControlDeliveryResponse.schema.json +0 -1
  113. package/generated/ControlHandshakeResponse.schema.json +31 -3
  114. package/generated/ControlHarnessListResponse.schema.json +11 -6
  115. package/generated/ControlHarnessSettingsPatch.schema.json +4 -0
  116. package/generated/ControlOperationCatalog.schema.json +16 -1
  117. package/generated/ControlOperationDescriptor.schema.json +15 -0
  118. package/generated/ControlProject.schema.json +35 -0
  119. package/generated/ControlProjectListResponse.schema.json +35 -0
  120. package/generated/ControlProjectOutputsResponse.schema.json +57 -0
  121. package/generated/ControlQueuedRunInfo.schema.json +2 -11
  122. package/generated/ControlQuotaResponse.schema.json +42 -0
  123. package/generated/ControlRunAgainDraft.schema.json +37 -35
  124. package/generated/ControlRunDecisionRequest.schema.json +0 -1
  125. package/generated/ControlRunDetail.schema.json +292 -213
  126. package/generated/ControlRunListResponse.schema.json +88 -27
  127. package/generated/ControlRunStartRequest.schema.json +37 -35
  128. package/generated/ControlRunStartResponse.schema.json +2 -11
  129. package/generated/ControlRunSummary.schema.json +88 -27
  130. package/generated/ControlSettingsSnapshot.schema.json +6 -11
  131. package/generated/ControlSettingsUpdateRequest.schema.json +5 -10
  132. package/generated/ControlThread.schema.json +21 -3
  133. package/generated/ControlThreadApplyResponse.schema.json +0 -1
  134. package/generated/ControlThreadCreateRequest.schema.json +12 -3
  135. package/generated/ControlThreadDetail.schema.json +174 -16
  136. package/generated/ControlThreadListResponse.schema.json +60 -3
  137. package/generated/ControlThreadTurnRequest.schema.json +40 -34
  138. package/generated/ControlThreadUpdateRequest.schema.json +19 -0
  139. package/generated/DecisionRecord.schema.json +73 -33
  140. package/generated/GateResult.schema.json +1 -2
  141. package/generated/GlobalConfig.schema.json +7 -12
  142. package/generated/HarnessManifest.schema.json +11 -6
  143. package/generated/HarnessStatusDto.schema.json +11 -6
  144. package/generated/LaneCheckpoint.schema.json +59 -0
  145. package/generated/McpRunHandleResult.schema.json +234 -0
  146. package/generated/McpRunToolResult.schema.json +124 -2
  147. package/generated/RoutePrimaryDivergedPayload.schema.json +56 -0
  148. package/generated/RunEvent.schema.json +9 -5
  149. package/generated/RunTelemetry.schema.json +2 -4
  150. package/generated/TaskContract.schema.json +3 -135
  151. package/generated/Thread.schema.json +21 -3
  152. package/generated/ThreadTurn.schema.json +88 -0
  153. package/package.json +2 -2
  154. package/dist/control-spec.d.ts +0 -603
  155. package/dist/control-spec.d.ts.map +0 -1
  156. package/dist/control-spec.js +0 -87
  157. package/dist/control-spec.js.map +0 -1
  158. package/dist/orchestrate.d.ts +0 -556
  159. package/dist/orchestrate.d.ts.map +0 -1
  160. package/dist/orchestrate.js +0 -356
  161. package/dist/orchestrate.js.map +0 -1
  162. package/dist/spec.d.ts +0 -678
  163. package/dist/spec.d.ts.map +0 -1
  164. package/dist/spec.js +0 -186
  165. package/dist/spec.js.map +0 -1
  166. package/generated/ControlSpecAnswersRequest.schema.json +0 -74
  167. package/generated/ControlSpecQuestionsRequest.schema.json +0 -209
  168. package/generated/ControlSpecSession.schema.json +0 -261
  169. package/generated/ControlSpecSessionListResponse.schema.json +0 -273
  170. package/generated/OrchestrateContract.schema.json +0 -119
  171. package/generated/OrchestratePlan.schema.json +0 -264
  172. package/generated/OrchestratePlanProgress.schema.json +0 -164
  173. package/generated/SessionReboundLineage.schema.json +0 -73
  174. package/generated/SpecPack.schema.json +0 -483
@@ -26,21 +26,12 @@
26
26
  "enum": [
27
27
  "queued",
28
28
  "running",
29
- "blocked",
30
29
  "succeeded",
31
- "no_op",
32
- "ungated",
33
- "review_not_run",
34
30
  "failed",
35
31
  "cancelled",
36
- "interrupted_unknown",
37
- "cost_unverifiable",
38
- "exhausted_overshoot",
39
- "exhausted",
40
- "not_converged",
41
- "stuck_no_progress"
32
+ "interrupted"
42
33
  ],
43
- "description": "Control-plane run state: queued/running while live, then an honest success, block, failure, interruption, cost, exhaustion, non-convergence, or cancellation terminal."
34
+ "description": "Control-plane run state = the run LIFECYCLE (D8): queued/running while live, then exactly one of succeeded / failed / cancelled / interrupted. Outcome quality (checks/review/delivery) is orthogonal — see outcomeFacts."
44
35
  },
45
36
  "runDir": {
46
37
  "type": "string",
@@ -198,11 +189,9 @@
198
189
  "enum": [
199
190
  "ask",
200
191
  "plan",
201
- "audit",
202
- "agent",
203
- "orchestrate"
192
+ "agent"
204
193
  ],
205
- "description": "Canonical run mode: ask, plan, and audit are read-only; agent writes; orchestrate is the autonomous coordinator intent. Engine strategies (race, attempts, swarm, create) are flags on a mode, not modes."
194
+ "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."
206
195
  },
207
196
  "strategy": {
208
197
  "anyOf": [
@@ -212,7 +201,7 @@
212
201
  "race",
213
202
  "attempts",
214
203
  "until_clean",
215
- "swarm",
204
+ "deep_scan",
216
205
  "create"
217
206
  ]
218
207
  },
@@ -220,7 +209,7 @@
220
209
  "type": "null"
221
210
  }
222
211
  ],
223
- "description": "Engine strategy flag on the mode (race width / attempt caps / until-clean / swarm / create); flags, not modes."
212
+ "description": "Engine strategy flag on the mode (race width / attempt caps / until-clean / deep-scan / create); flags, not modes."
224
213
  },
225
214
  "prompt": {
226
215
  "type": "string",
@@ -283,7 +272,7 @@
283
272
  "harness"
284
273
  ],
285
274
  "additionalProperties": false,
286
- "description": "One reviewer of an explicit reviewer panel."
275
+ "description": "One reviewer of an explicit reviewer panel — a harness plus optional model and effort. The CLI spells one entry `harness=model:effort` (e.g. `claude=claude-opus-4-8:max`)."
287
276
  },
288
277
  "description": "Explicit reviewer panel used for the run."
289
278
  },
@@ -837,6 +826,87 @@
837
826
  "description": "Honest terminal outcome of a run (what the turn actually did), projected from the work product and answer artifacts.",
838
827
  "default": {}
839
828
  },
829
+ "outcomeFacts": {
830
+ "anyOf": [
831
+ {
832
+ "type": "object",
833
+ "properties": {
834
+ "lifecycle": {
835
+ "type": "string",
836
+ "enum": [
837
+ "succeeded",
838
+ "failed",
839
+ "cancelled",
840
+ "interrupted"
841
+ ],
842
+ "description": "Terminal lifecycle of the run."
843
+ },
844
+ "noChanges": {
845
+ "type": "boolean",
846
+ "default": false,
847
+ "description": "True when the run finished without changing any files (the ex no_op fact)."
848
+ },
849
+ "checks": {
850
+ "type": "string",
851
+ "enum": [
852
+ "passed",
853
+ "failed",
854
+ "not_configured"
855
+ ],
856
+ "description": "Deterministic checks axis: configured project checks passed, failed, or none are configured (a named state, never a stand-in for review results).",
857
+ "default": "not_configured"
858
+ },
859
+ "review": {
860
+ "type": "string",
861
+ "enum": [
862
+ "approved",
863
+ "blocked",
864
+ "not_run"
865
+ ],
866
+ "description": "Review axis: approved (clean cross-family verified review), blocked (open accepted findings), or not_run.",
867
+ "default": "not_run"
868
+ },
869
+ "reason": {
870
+ "anyOf": [
871
+ {
872
+ "type": "string",
873
+ "enum": [
874
+ "harness_failed",
875
+ "no_changes",
876
+ "review_blocked",
877
+ "checks_failed",
878
+ "budget_exhausted",
879
+ "budget_overshoot",
880
+ "cost_unverifiable",
881
+ "not_converged",
882
+ "stuck_no_progress",
883
+ "wall_clock_exceeded",
884
+ "user_cancelled",
885
+ "crash_interrupted"
886
+ ],
887
+ "description": "Typed reason qualifying a non-clean terminal; null on a clean success."
888
+ },
889
+ {
890
+ "type": "null"
891
+ }
892
+ ],
893
+ "description": "Typed reason qualifying a non-clean terminal; null on a clean success.",
894
+ "default": null
895
+ }
896
+ },
897
+ "required": [
898
+ "lifecycle"
899
+ ],
900
+ "additionalProperties": false,
901
+ "description": "Independent terminal outcome axes of a run (D8/D18)."
902
+ },
903
+ {
904
+ "type": "null"
905
+ }
906
+ ],
907
+ "description": "D8 terminal outcome axes (checks/review/reason/noChanges) projected from decision.facts or derived from the failure; null while non-terminal.",
908
+ "default": null
909
+ },
840
910
  "waitingOnUser": {
841
911
  "type": "boolean",
842
912
  "default": false,
@@ -927,15 +997,6 @@
927
997
  },
928
998
  "description": "Typed argv gates."
929
999
  },
930
- "specId": {
931
- "type": "string",
932
- "description": "SpecPack id the run was held to."
933
- },
934
- "specHash": {
935
- "type": "string",
936
- "minLength": 1,
937
- "description": "Content hash of the SpecPack the run was held to."
938
- },
939
1000
  "createdAt": {
940
1001
  "type": "string",
941
1002
  "description": "When the run was created."
@@ -37,11 +37,9 @@
37
37
  "enum": [
38
38
  "ask",
39
39
  "plan",
40
- "audit",
41
- "agent",
42
- "orchestrate"
40
+ "agent"
43
41
  ],
44
- "description": "Canonical run mode: ask, plan, and audit are read-only; agent writes; orchestrate is the autonomous coordinator intent. Engine strategies (race, attempts, swarm, create) are flags on a mode, not modes.",
42
+ "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.",
45
43
  "default": "agent"
46
44
  },
47
45
  "scope": {
@@ -220,14 +218,18 @@
220
218
  "type": "boolean",
221
219
  "description": "Agent flag: iterate until the convergence predicate is clean (no fixed cap)."
222
220
  },
223
- "swarm": {
221
+ "deepScan": {
224
222
  "type": "boolean",
225
- "description": "Audit flag: bounded read-only research swarm."
223
+ "description": "Ask flag: bounded multi-scout research sweep with synthesis."
226
224
  },
227
225
  "create": {
228
226
  "type": "boolean",
229
227
  "description": "Agent flag: create-from-scratch intent."
230
228
  },
229
+ "council": {
230
+ "type": "boolean",
231
+ "description": "Plan strategy: N harnesses draft plans in parallel, the primary merges into one unified plan + one question set. Plan mode only."
232
+ },
231
233
  "synthesis": {
232
234
  "type": "string",
233
235
  "enum": [
@@ -366,19 +368,6 @@
366
368
  },
367
369
  "description": "Typed per-run approvals for changing auto-protected gate/test paths; does not bypass built-in critical/security path human gates."
368
370
  },
369
- "specPath": {
370
- "$ref": "#/definitions/ControlRunStartRequest/properties/harnesses/items",
371
- "description": "Path to a frozen SpecPack the run is held to."
372
- },
373
- "specId": {
374
- "type": "string",
375
- "description": "Id of the SpecPack the run is held to."
376
- },
377
- "specHash": {
378
- "type": "string",
379
- "minLength": 1,
380
- "description": "Content hash of the SpecPack the run is held to."
381
- },
382
371
  "threadId": {
383
372
  "type": "string",
384
373
  "minLength": 1,
@@ -400,6 +389,29 @@
400
389
  "$ref": "#/definitions/ControlRunStartRequest/properties/threadId",
401
390
  "description": "Internal daemon handoff only; rejected (400) on POST /runs. When set, the turn implements an approved plan from that run."
402
391
  },
392
+ "planRef": {
393
+ "type": "object",
394
+ "properties": {
395
+ "runId": {
396
+ "$ref": "#/definitions/ControlRunStartRequest/properties/threadId"
397
+ },
398
+ "sha256": {
399
+ "type": "string",
400
+ "pattern": "^[0-9a-f]{64}$"
401
+ },
402
+ "path": {
403
+ "type": "string",
404
+ "minLength": 1
405
+ }
406
+ },
407
+ "required": [
408
+ "runId",
409
+ "sha256",
410
+ "path"
411
+ ],
412
+ "additionalProperties": false,
413
+ "description": "Internal daemon handoff only; rejected (400) on POST /runs. Frozen-plan reference delivered to the executor as a file."
414
+ },
403
415
  "reviewerPanel": {
404
416
  "type": "array",
405
417
  "items": {
@@ -424,10 +436,10 @@
424
436
  "harness"
425
437
  ],
426
438
  "additionalProperties": false,
427
- "description": "One reviewer of an explicit reviewer panel."
439
+ "description": "One reviewer of an explicit reviewer panel — a harness plus optional model and effort. The CLI spells one entry `harness=model:effort` (e.g. `claude=claude-opus-4-8:max`)."
428
440
  },
429
441
  "minItems": 1,
430
- "description": "Explicit reviewer panel; overrides the legacy reviewerModels/reviewerEfforts maps and preserves duplicate harness entries for multi-model same-provider reviews."
442
+ "description": "Explicit reviewer panel — who reviews the change, one entry per reviewer as `harness=model:effort` (CLI `--reviewers \"claude=claude-opus-4-8:max,cursor=gemini-3.1-pro\"`). Duplicate harness entries are kept so one provider can review through several models; overrides the legacy reviewerModels/reviewerEfforts maps."
431
443
  },
432
444
  "authPreference": {
433
445
  "type": "string",
@@ -450,19 +462,9 @@
450
462
  ],
451
463
  "description": "Explicit per-run credential profile id; null FORCES the engine-default ladder past a thread-sticky profile; unknown/disabled ids refuse, never default."
452
464
  },
453
- "autonomy": {
454
- "type": "string",
455
- "enum": [
456
- "suggest",
457
- "auto_safe",
458
- "auto_full"
459
- ],
460
- "description": "Autonomy level for the orchestrate planner; only meaningful for mode=orchestrate."
461
- },
462
- "maxToolCalls": {
463
- "type": "integer",
464
- "exclusiveMinimum": 0,
465
- "description": "Cap on orchestrate plan tool calls; only meaningful for mode=orchestrate."
465
+ "delegate": {
466
+ "type": "boolean",
467
+ "description": "Agent-only: inject the Claudexor delegation belt so the harness can spawn bounded isolated sub-runs; refused on non-agent modes or harnesses without mcp_injection."
466
468
  },
467
469
  "maxSeconds": {
468
470
  "type": "integer",
@@ -490,7 +492,7 @@
490
492
  }
491
493
  },
492
494
  "additionalProperties": false,
493
- "description": "Request body for POST /runs: prompt, mode, scope, routing, strategy flags, budget, policies, and spec/thread linkage."
495
+ "description": "Request body for POST /runs: prompt, mode, scope, routing, strategy flags, budget, policies, and thread linkage."
494
496
  }
495
497
  },
496
498
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -42,21 +42,12 @@
42
42
  "enum": [
43
43
  "queued",
44
44
  "running",
45
- "blocked",
46
45
  "succeeded",
47
- "no_op",
48
- "ungated",
49
- "review_not_run",
50
46
  "failed",
51
47
  "cancelled",
52
- "interrupted_unknown",
53
- "cost_unverifiable",
54
- "exhausted_overshoot",
55
- "exhausted",
56
- "not_converged",
57
- "stuck_no_progress"
48
+ "interrupted"
58
49
  ],
59
- "description": "Control-plane run state: queued/running while live, then an honest success, block, failure, interruption, cost, exhaustion, non-convergence, or cancellation terminal."
50
+ "description": "Control-plane run state = the run LIFECYCLE (D8): queued/running while live, then exactly one of succeeded / failed / cancelled / interrupted. Outcome quality (checks/review/delivery) is orthogonal — see outcomeFacts."
60
51
  },
61
52
  "error": {
62
53
  "type": "string",
@@ -21,21 +21,12 @@
21
21
  "enum": [
22
22
  "queued",
23
23
  "running",
24
- "blocked",
25
24
  "succeeded",
26
- "no_op",
27
- "ungated",
28
- "review_not_run",
29
25
  "failed",
30
26
  "cancelled",
31
- "interrupted_unknown",
32
- "cost_unverifiable",
33
- "exhausted_overshoot",
34
- "exhausted",
35
- "not_converged",
36
- "stuck_no_progress"
27
+ "interrupted"
37
28
  ],
38
- "description": "Control-plane run state: queued/running while live, then an honest success, block, failure, interruption, cost, exhaustion, non-convergence, or cancellation terminal."
29
+ "description": "Control-plane run state = the run LIFECYCLE (D8): queued/running while live, then exactly one of succeeded / failed / cancelled / interrupted. Outcome quality (checks/review/delivery) is orthogonal — see outcomeFacts."
39
30
  },
40
31
  "runDir": {
41
32
  "type": "string",
@@ -193,11 +184,9 @@
193
184
  "enum": [
194
185
  "ask",
195
186
  "plan",
196
- "audit",
197
- "agent",
198
- "orchestrate"
187
+ "agent"
199
188
  ],
200
- "description": "Canonical run mode: ask, plan, and audit are read-only; agent writes; orchestrate is the autonomous coordinator intent. Engine strategies (race, attempts, swarm, create) are flags on a mode, not modes."
189
+ "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."
201
190
  },
202
191
  "strategy": {
203
192
  "anyOf": [
@@ -207,7 +196,7 @@
207
196
  "race",
208
197
  "attempts",
209
198
  "until_clean",
210
- "swarm",
199
+ "deep_scan",
211
200
  "create"
212
201
  ]
213
202
  },
@@ -215,7 +204,7 @@
215
204
  "type": "null"
216
205
  }
217
206
  ],
218
- "description": "Engine strategy flag on the mode (race width / attempt caps / until-clean / swarm / create); flags, not modes."
207
+ "description": "Engine strategy flag on the mode (race width / attempt caps / until-clean / deep-scan / create); flags, not modes."
219
208
  },
220
209
  "prompt": {
221
210
  "type": "string",
@@ -278,7 +267,7 @@
278
267
  "harness"
279
268
  ],
280
269
  "additionalProperties": false,
281
- "description": "One reviewer of an explicit reviewer panel."
270
+ "description": "One reviewer of an explicit reviewer panel — a harness plus optional model and effort. The CLI spells one entry `harness=model:effort` (e.g. `claude=claude-opus-4-8:max`)."
282
271
  },
283
272
  "description": "Explicit reviewer panel used for the run."
284
273
  },
@@ -832,6 +821,87 @@
832
821
  "description": "Honest terminal outcome of a run (what the turn actually did), projected from the work product and answer artifacts.",
833
822
  "default": {}
834
823
  },
824
+ "outcomeFacts": {
825
+ "anyOf": [
826
+ {
827
+ "type": "object",
828
+ "properties": {
829
+ "lifecycle": {
830
+ "type": "string",
831
+ "enum": [
832
+ "succeeded",
833
+ "failed",
834
+ "cancelled",
835
+ "interrupted"
836
+ ],
837
+ "description": "Terminal lifecycle of the run."
838
+ },
839
+ "noChanges": {
840
+ "type": "boolean",
841
+ "default": false,
842
+ "description": "True when the run finished without changing any files (the ex no_op fact)."
843
+ },
844
+ "checks": {
845
+ "type": "string",
846
+ "enum": [
847
+ "passed",
848
+ "failed",
849
+ "not_configured"
850
+ ],
851
+ "description": "Deterministic checks axis: configured project checks passed, failed, or none are configured (a named state, never a stand-in for review results).",
852
+ "default": "not_configured"
853
+ },
854
+ "review": {
855
+ "type": "string",
856
+ "enum": [
857
+ "approved",
858
+ "blocked",
859
+ "not_run"
860
+ ],
861
+ "description": "Review axis: approved (clean cross-family verified review), blocked (open accepted findings), or not_run.",
862
+ "default": "not_run"
863
+ },
864
+ "reason": {
865
+ "anyOf": [
866
+ {
867
+ "type": "string",
868
+ "enum": [
869
+ "harness_failed",
870
+ "no_changes",
871
+ "review_blocked",
872
+ "checks_failed",
873
+ "budget_exhausted",
874
+ "budget_overshoot",
875
+ "cost_unverifiable",
876
+ "not_converged",
877
+ "stuck_no_progress",
878
+ "wall_clock_exceeded",
879
+ "user_cancelled",
880
+ "crash_interrupted"
881
+ ],
882
+ "description": "Typed reason qualifying a non-clean terminal; null on a clean success."
883
+ },
884
+ {
885
+ "type": "null"
886
+ }
887
+ ],
888
+ "description": "Typed reason qualifying a non-clean terminal; null on a clean success.",
889
+ "default": null
890
+ }
891
+ },
892
+ "required": [
893
+ "lifecycle"
894
+ ],
895
+ "additionalProperties": false,
896
+ "description": "Independent terminal outcome axes of a run (D8/D18)."
897
+ },
898
+ {
899
+ "type": "null"
900
+ }
901
+ ],
902
+ "description": "D8 terminal outcome axes (checks/review/reason/noChanges) projected from decision.facts or derived from the failure; null while non-terminal.",
903
+ "default": null
904
+ },
835
905
  "waitingOnUser": {
836
906
  "type": "boolean",
837
907
  "default": false,
@@ -922,15 +992,6 @@
922
992
  },
923
993
  "description": "Typed argv gates."
924
994
  },
925
- "specId": {
926
- "type": "string",
927
- "description": "SpecPack id the run was held to."
928
- },
929
- "specHash": {
930
- "type": "string",
931
- "minLength": 1,
932
- "description": "Content hash of the SpecPack the run was held to."
933
- },
934
995
  "createdAt": {
935
996
  "type": "string",
936
997
  "description": "When the run was created."
@@ -21,15 +21,6 @@
21
21
  "routing": {
22
22
  "type": "object",
23
23
  "properties": {
24
- "defaultPolicy": {
25
- "type": "string",
26
- "enum": [
27
- "auto",
28
- "primary"
29
- ],
30
- "default": "auto",
31
- "description": "Default routing policy."
32
- },
33
24
  "primaryHarness": {
34
25
  "type": [
35
26
  "string",
@@ -138,8 +129,7 @@
138
129
  "verify",
139
130
  "synthesize",
140
131
  "explain",
141
- "audit",
142
- "orchestrate"
132
+ "audit"
143
133
  ]
144
134
  },
145
135
  "default": {},
@@ -253,6 +243,11 @@
253
243
  "default": true,
254
244
  "description": "Whether the harness participates in routing."
255
245
  },
246
+ "nativeCredentialsEnabled": {
247
+ "type": "boolean",
248
+ "default": true,
249
+ "description": "Whether the native/CLI login participates in this harness's credential ladder."
250
+ },
256
251
  "defaultModel": {
257
252
  "type": [
258
253
  "string",
@@ -75,8 +75,7 @@
75
75
  "verify",
76
76
  "synthesize",
77
77
  "explain",
78
- "audit",
79
- "orchestrate"
78
+ "audit"
80
79
  ]
81
80
  },
82
81
  "default": {},
@@ -87,14 +86,6 @@
87
86
  "exclusiveMinimum": 0,
88
87
  "description": "New interactive-answer timeout, in milliseconds."
89
88
  },
90
- "routingPolicy": {
91
- "type": "string",
92
- "enum": [
93
- "auto",
94
- "primary"
95
- ],
96
- "description": "New default routing policy."
97
- },
98
89
  "primaryHarness": {
99
90
  "anyOf": [
100
91
  {
@@ -178,6 +169,10 @@
178
169
  "type": "boolean",
179
170
  "description": "Enable/disable the harness for routing."
180
171
  },
172
+ "nativeCredentialsEnabled": {
173
+ "type": "boolean",
174
+ "description": "Whether the native/CLI login participates in this harness's credential ladder."
175
+ },
181
176
  "defaultModel": {
182
177
  "anyOf": [
183
178
  {
@@ -30,9 +30,7 @@
30
30
  "enum": [
31
31
  "ask",
32
32
  "plan",
33
- "audit",
34
- "agent",
35
- "orchestrate"
33
+ "agent"
36
34
  ],
37
35
  "description": "Default mode for new turns."
38
36
  },
@@ -85,6 +83,26 @@
85
83
  "description": "Sticky credential profile for the thread; per-turn selection wins, null = engine-default credentials.",
86
84
  "default": null
87
85
  },
86
+ "access": {
87
+ "anyOf": [
88
+ {
89
+ "type": "string",
90
+ "enum": [
91
+ "readonly",
92
+ "workspace_write",
93
+ "full",
94
+ "external_sandbox_full",
95
+ "inherit_native"
96
+ ],
97
+ "description": "Filesystem/command access profile for a run: readonly (no writes), workspace_write (writes inside the workspace only), full (unrestricted; requires the per-repo trust allow), external_sandbox_full (full access inside an external sandbox), inherit_native (defer to the harness's own native sandbox settings)."
98
+ },
99
+ {
100
+ "type": "null"
101
+ }
102
+ ],
103
+ "description": "Sticky write scope for write turns; null = the repo trust default.",
104
+ "default": null
105
+ },
88
106
  "state": {
89
107
  "type": "string",
90
108
  "enum": [
@@ -42,7 +42,6 @@
42
42
  "mode": {
43
43
  "type": "string",
44
44
  "enum": [
45
- "artifact_only",
46
45
  "apply",
47
46
  "branch",
48
47
  "commit",
@@ -62,9 +62,7 @@
62
62
  "enum": [
63
63
  "ask",
64
64
  "plan",
65
- "audit",
66
- "agent",
67
- "orchestrate"
65
+ "agent"
68
66
  ],
69
67
  "description": "Default mode for new turns."
70
68
  },
@@ -101,6 +99,17 @@
101
99
  "$ref": "#/definitions/ControlThreadCreateRequest/properties/credentialProfileId"
102
100
  },
103
101
  "description": "Sticky eligible harness pool; turns inherit it when unset."
102
+ },
103
+ "access": {
104
+ "type": "string",
105
+ "enum": [
106
+ "readonly",
107
+ "workspace_write",
108
+ "full",
109
+ "external_sandbox_full",
110
+ "inherit_native"
111
+ ],
112
+ "description": "Sticky write scope for the thread's write turns; omit = the repo trust default."
104
113
  }
105
114
  },
106
115
  "additionalProperties": false,