@openwop/spec-artifacts 2.42.6 → 2.42.7

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 (63) hide show
  1. package/CORPUS-STAMP.json +64 -63
  2. package/api/seams-v2.yaml +187 -322
  3. package/api/v2/asyncapi.yaml +83 -113
  4. package/api/v2/openapi.yaml +339 -724
  5. package/package.json +1 -1
  6. package/schemas/audit-verify-result.schema.json +2 -2
  7. package/schemas/v2/audit-verify-result.schema.json +2 -2
  8. package/schemas/v2/capabilities.schema.json +2 -5
  9. package/spec/v1/core-standard-manifest.json +2 -2
  10. package/spec/v1/gaps.json +171 -1
  11. package/spec/v2/README.md +34 -36
  12. package/spec/v2/core/capabilities.md +186 -119
  13. package/spec/v2/core/conformance.md +78 -27
  14. package/spec/v2/core/connection-packs.md +8 -3
  15. package/spec/v2/core/conversation.md +10 -4
  16. package/spec/v2/core/errors.md +30 -9
  17. package/spec/v2/core/events.md +116 -80
  18. package/spec/v2/core/form-content-packs.md +11 -13
  19. package/spec/v2/core/headers.md +22 -14
  20. package/spec/v2/core/host-services.md +22 -5
  21. package/spec/v2/core/idempotency.md +48 -36
  22. package/spec/v2/core/identity.md +110 -42
  23. package/spec/v2/core/interop.md +82 -21
  24. package/spec/v2/core/interrupt.md +79 -40
  25. package/spec/v2/core/node-pack-runtimes.md +18 -4
  26. package/spec/v2/core/oauth.md +40 -6
  27. package/spec/v2/core/overview.md +61 -33
  28. package/spec/v2/core/packs.md +53 -28
  29. package/spec/v2/core/persistence.md +61 -80
  30. package/spec/v2/core/replay.md +56 -42
  31. package/spec/v2/core/runs.md +198 -60
  32. package/spec/v2/core/security-defaults.md +57 -33
  33. package/spec/v2/core/tool-catalog.md +29 -6
  34. package/spec/v2/core/versioning.md +95 -49
  35. package/spec/v2/core/webhooks.md +59 -20
  36. package/spec/v2/core/workflow-chain-packs.md +16 -14
  37. package/spec/v2/corrections.json +17 -1
  38. package/spec/v2/corrections.schema.json +1 -1
  39. package/spec/v2/declaration.json +24 -7
  40. package/spec/v2/declaration.schema.json +10 -0
  41. package/spec/v2/errors.json +109 -2
  42. package/spec/v2/errors.schema.json +38 -0
  43. package/spec/v2/ext/README.md +36 -23
  44. package/spec/v2/ext/a2uiSurface/README.md +75 -89
  45. package/spec/v2/ext/brand/README.md +15 -15
  46. package/spec/v2/ext/canvas/README.md +15 -15
  47. package/spec/v2/ext/chat/README.md +15 -15
  48. package/spec/v2/ext/coordination/README.md +15 -15
  49. package/spec/v2/ext/dataIntegration/README.md +17 -20
  50. package/spec/v2/ext/entities/README.md +15 -15
  51. package/spec/v2/ext/grpc-transport/README.md +6 -8
  52. package/spec/v2/ext/kanban/README.md +15 -15
  53. package/spec/v2/ext/knowledge/README.md +15 -15
  54. package/spec/v2/ext/launchStudio/README.md +16 -16
  55. package/spec/v2/ext/messaging/README.md +15 -15
  56. package/spec/v2/ext/portability/README.md +3 -17
  57. package/spec/v2/ext/provider-idempotency/README.md +7 -10
  58. package/spec/v2/ext/restTransport/README.md +30 -19
  59. package/spec/v2/ext/sandbox-runtime-notes/README.md +7 -9
  60. package/spec/v2/ext/webResearch/README.md +16 -16
  61. package/spec/v2/profiles.json +6 -2
  62. package/spec/v2/release.json +2 -2
  63. package/spec/v2/surface-baseline.json +542 -2
@@ -1,11 +1,13 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.42.6
5
- description: GENERATED by scripts/derive-v2-api.py (RFC 0171 §E.1, RFC 0172 §C.2). One run-events channel whose address
6
- is the OpenAPI path key; the server pathname is empty (bare origin). streamMode is a pattern over the closed set and its
7
- comma-separated combinations (`values` never combines). hostEvents has a real address (RFC 0171 §E.1) — the documented
8
- default; a host MAY declare another under `heartbeat.deliveryChannel`.
4
+ version: 2.42.7
5
+ description: 'OpenWOP v2 event streams over SSE. The run-events channel''s address is the OpenAPI path key, and the server
6
+ pathname is empty (bare origin). `streamMode` is a stream mode from the closed set, or a comma-separated combination of
7
+ them; `values` never combines. `hostEvents` has a default address, `/host/events`; a host MAY declare another under `heartbeat.deliveryChannel`.
8
+
9
+
10
+ Generated from `api/asyncapi.yaml` by `scripts/derive-v2-api.py`; do not edit.'
9
11
  defaultContentType: text/event-stream
10
12
  servers:
11
13
  production:
@@ -21,13 +23,13 @@ channels:
21
23
  title: Run event stream (SSE)
22
24
  parameters:
23
25
  runId:
24
- description: ids.schema.json#/$defs/runId
26
+ description: The run to subscribe to (`ids.schema.json#/$defs/runId`).
25
27
  messages:
26
28
  runEvent:
27
29
  $ref: '#/components/messages/RunEvent'
28
30
  hostEvents:
29
31
  address: /host/events
30
- title: Host-scoped events (heartbeat.*)
32
+ title: Host-scoped events (`heartbeat.*`)
31
33
  messages:
32
34
  heartbeatEvaluated:
33
35
  $ref: '#/components/messages/HeartbeatEvaluated'
@@ -39,8 +41,8 @@ operations:
39
41
  channel:
40
42
  $ref: '#/channels/runEvents'
41
43
  title: Subscribe to a run's events
42
- description: Long-lived SSE subscription; auto-closes on a terminal run event; `Last-Event-ID` resumes from the sequence
43
- AFTER the supplied one. Mixed mode is union-of-filters with per-event `event:` labels (stream-modes).
44
+ description: A long-lived SSE subscription that closes after a terminal run event. `Last-Event-ID` resumes from the sequence
45
+ after the supplied one. A mixed mode is the union of its filters, and each event carries its own `event:` label (`stream-modes.md`).
44
46
  bindings:
45
47
  http:
46
48
  method: GET
@@ -66,98 +68,99 @@ components:
66
68
  type: http
67
69
  scheme: bearer
68
70
  bearerFormat: API key
69
- description: 'Bearer API key, the same scheme as api/v2/openapi.yaml `ApiKeyAuth` (RFC 0200 §F). Required scope: `runs:read`
70
- to subscribe.'
71
+ description: Bearer API key; the same scheme as `ApiKeyAuth` in `api/v2/openapi.yaml`. Subscribing requires the `runs:read`
72
+ scope.
71
73
  parameters:
72
74
  RunId:
73
75
  description: The run to subscribe to. Format opaque; clients MUST treat as a string.
74
76
  messages:
75
77
  EvalStarted:
76
78
  name: eval.started
77
- title: Eval run started (RFC 0081)
78
- summary: An eval run began. Content-free — suite provenance + counts only. Gated on capabilities.agents.evalSuite.supported.
79
+ title: Eval run started
80
+ summary: 'An eval run began. Content-free: suite provenance and counts only. Gated on `capabilities.agents.evalSuite.supported`.'
79
81
  contentType: application/json
80
82
  payload:
81
83
  $ref: '#/components/schemas/EvalStartedPayload'
82
84
  EvalScored:
83
85
  name: eval.scored
84
- title: Eval task scored (RFC 0081)
85
- summary: One eval task was scored (emitted per task, after its terminal agent.decided). Content-free — taskId + score
86
- + scalars only, never task output (eval-summary-no-content-leak).
86
+ title: Eval task scored
87
+ summary: 'One eval task was scored, emitted per task after its terminal `agent.decided`. Content-free: `taskId`, score
88
+ and scalars only, never task output (`eval-summary-no-content-leak`).'
87
89
  contentType: application/json
88
90
  payload:
89
91
  $ref: '#/components/schemas/EvalScoredPayload'
90
92
  EvalCompleted:
91
93
  name: eval.completed
92
- title: Eval run completed (RFC 0081)
93
- summary: An eval run finished. Content-free aggregate scalars; the full scorecard is the run output, read via GET /runs/{runId}/eval-summary.
94
+ title: Eval run completed
95
+ summary: An eval run finished. Content-free aggregate scalars; the full scorecard is the run output, read with `GET
96
+ /runs/{runId}/eval-summary`.
94
97
  contentType: application/json
95
98
  payload:
96
99
  $ref: '#/components/schemas/EvalCompletedPayload'
97
100
  DeploymentPromoted:
98
101
  name: deployment.promoted
99
- title: Deployment promoted (RFC 0082)
100
- summary: A version was promoted into a new lifecycle state (gated by RFC 0049 deploy:* + RFC 0051 approvalGate + RFC
101
- 0081 requiredEval). Content-free (deployment-event-no-content-leak). Principal-stamped + audit-logged.
102
+ title: Deployment promoted
103
+ summary: A version was promoted into a new lifecycle state, gated by the `deploy:*` scope, the approvalGate, and `requiredEval`.
104
+ Content-free (`deployment-event-no-content-leak`); principal-stamped and audit-logged.
102
105
  contentType: application/json
103
106
  payload:
104
107
  $ref: '#/components/schemas/DeploymentPromotedPayload'
105
108
  DeploymentRolledBack:
106
109
  name: deployment.rolled-back
107
- title: Deployment rolled back (RFC 0082)
110
+ title: Deployment rolled back
108
111
  summary: An active version was rolled back and a prior version restored. Content-free; recorded-fact; audit-logged.
109
112
  contentType: application/json
110
113
  payload:
111
114
  $ref: '#/components/schemas/DeploymentRolledBackPayload'
112
115
  DeploymentCanaryAdjusted:
113
116
  name: deployment.canary-adjusted
114
- title: Deployment canary adjusted (RFC 0082)
117
+ title: Deployment canary adjusted
115
118
  summary: An active version's canary traffic share changed. Content-free; recorded-fact; audit-logged.
116
119
  contentType: application/json
117
120
  payload:
118
121
  $ref: '#/components/schemas/DeploymentCanaryAdjustedPayload'
119
122
  DeploymentStateChanged:
120
123
  name: deployment.state-changed
121
- title: Deployment state changed (RFC 0082)
122
- summary: A non-promotion lifecycle transition (pause / resume / deprecate). Content-free; recorded-fact; audit-logged.
124
+ title: Deployment state changed
125
+ summary: A non-promotion lifecycle transition (pause, resume, deprecate). Content-free; recorded-fact; audit-logged.
123
126
  contentType: application/json
124
127
  payload:
125
128
  $ref: '#/components/schemas/DeploymentStateChangedPayload'
126
129
  ProposalCreated:
127
130
  name: proposal.created
128
- title: Proposal created (RFC 0096)
129
- summary: The host synthesized a reviewable-learning draft. Content-free — ids/kind/refs only, never the artifact body
130
- or rationale (proposal-inert-until-applied). Emitted only when capabilities.agents.proposals is advertised.
131
+ title: Proposal created
132
+ summary: 'The host synthesized a reviewable-learning draft. Content-free: ids, kind and refs only, never the artifact
133
+ body or rationale (`proposal-inert-until-applied`). Emitted only when `capabilities.agents.proposals` is advertised.'
131
134
  contentType: application/json
132
135
  payload:
133
136
  $ref: '#/components/schemas/ProposalCreatedPayload'
134
137
  ProposalActivated:
135
138
  name: proposal.activated
136
- title: Proposal activated (RFC 0096)
137
- summary: A proposal was applied (RFC 0051/0049-gated). Content-free; the installed artifact byte-matches the last-persisted
138
- draft (proposal-no-resynthesis).
139
+ title: Proposal activated
140
+ summary: A proposal was applied, through its approval gate and authorization check. Content-free; the installed artifact
141
+ byte-matches the last-persisted draft (`proposal-no-resynthesis`).
139
142
  contentType: application/json
140
143
  payload:
141
144
  $ref: '#/components/schemas/ProposalActivatedPayload'
142
145
  GoalEvaluated:
143
146
  name: goal.evaluated
144
- title: Goal evaluated (RFC 0097)
145
- summary: A judge check ran against a standing goal. Content-free — no objective text; the verdict is recorded (not recomputed
146
- on replay).
147
+ title: Goal evaluated
148
+ summary: 'A judge check ran against a standing goal. Content-free: no objective text. The verdict is recorded, not recomputed
149
+ on replay.'
147
150
  contentType: application/json
148
151
  payload:
149
152
  $ref: '#/components/schemas/GoalEvaluatedPayload'
150
153
  GoalClosed:
151
154
  name: goal.closed
152
- title: Goal closed (RFC 0097)
153
- summary: A standing goal stopped continuation (satisfied / escalated / abandoned / bound-exceeded). Content-free.
155
+ title: Goal closed
156
+ summary: A standing goal stopped continuation (satisfied, escalated, abandoned, or bound-exceeded). Content-free.
154
157
  contentType: application/json
155
158
  payload:
156
159
  $ref: '#/components/schemas/GoalClosedPayload'
157
160
  ImportApplied:
158
161
  name: import.applied
159
- title: Import applied (RFC 0098)
160
- summary: An estate import was applied. Content-free — counts + refs only, never item payloads or secret values (export-bundle-no-credential-material).
162
+ title: Import applied
163
+ summary: 'An estate import was applied. Content-free: counts and refs only, never item payloads or secret values (`export-bundle-no-credential-material`).'
161
164
  contentType: application/json
162
165
  payload:
163
166
  $ref: '#/components/schemas/ImportAppliedPayload'
@@ -191,37 +194,37 @@ components:
191
194
  $ref: '#/components/schemas/RunEventDoc'
192
195
  CompensationRequested:
193
196
  name: compensation.requested
194
- title: Compensation plan persisted (RFC 0151 §C/§D)
195
- summary: The unwind plan is durable. §C requires this BEFORE the first inverse action executes — a host that starts
196
- unwinding first cannot resume after a crash, and the crash is when resumption matters.
197
+ title: Compensation plan persisted
198
+ summary: 'The unwind plan is durable. This event is required before the first inverse action executes: a host that starts
199
+ unwinding first cannot resume after a crash, and a crash is when resumption matters.'
197
200
  contentType: application/json
198
201
  payload:
199
202
  $ref: '#/components/schemas/RunEventDoc'
200
203
  CompensationStarted:
201
204
  name: compensation.started
202
- title: First inverse action started (RFC 0151 §D)
203
- summary: Compensation began executing. MUST follow compensation.requested.
205
+ title: First inverse action started
206
+ summary: Compensation began executing. MUST follow `compensation.requested`.
204
207
  contentType: application/json
205
208
  payload:
206
209
  $ref: '#/components/schemas/RunEventDoc'
207
210
  CompensationCompleted:
208
211
  name: compensation.completed
209
- title: Compensation completed (RFC 0151 §D)
212
+ title: Compensation completed
210
213
  summary: Every inverse action in the plan succeeded.
211
214
  contentType: application/json
212
215
  payload:
213
216
  $ref: '#/components/schemas/RunEventDoc'
214
217
  CompensationFailed:
215
218
  name: compensation.failed
216
- title: Compensation failed (RFC 0151 §D)
217
- summary: An inverse action exhausted its retries. Compensation is a second effect, not an undo — it can fail, and the
218
- run's compensationStatus records that rather than the run silently reporting success.
219
+ title: Compensation failed
220
+ summary: 'An inverse action exhausted its retries. Compensation is a second effect, not an undo: it can fail, and the
221
+ run''s `compensationStatus` records that rather than the run silently reporting success.'
219
222
  contentType: application/json
220
223
  payload:
221
224
  $ref: '#/components/schemas/RunEventDoc'
222
225
  CompensationPaused:
223
226
  name: compensation.paused
224
- title: Compensation paused for authorized intervention (RFC 0151 §C)
227
+ title: Compensation paused for authorized intervention
225
228
  summary: Cancelling the parent MUST NOT silently abandon an active compensation. It continues, pauses here, or records
226
229
  manual intervention required.
227
230
  contentType: application/json
@@ -229,8 +232,8 @@ components:
229
232
  $ref: '#/components/schemas/RunEventDoc'
230
233
  CompensationManualInterventionRequired:
231
234
  name: compensation.manual-intervention-required
232
- title: Compensation needs an operator (RFC 0151 §C/§E)
233
- summary: The host cannot proceed unaided. Recorded explicitly because an unwind that stops without saying so is indistinguishable
235
+ title: Compensation needs an operator
236
+ summary: The host cannot proceed unaided. Recorded explicitly, because an unwind that stops without saying so is indistinguishable
234
237
  from one that finished.
235
238
  contentType: application/json
236
239
  payload:
@@ -251,32 +254,32 @@ components:
251
254
  $ref: '#/components/schemas/RunEventDoc'
252
255
  RunAnnotated:
253
256
  name: run.annotated
254
- title: Run annotated (RFC 0056)
255
- summary: A non-blocking quality annotation was recorded for the run. Live notification ONLY — NOT a replayable run-event-log
256
- entry; its payload is an Annotation (not a RunEventDoc), so it is excluded from fork/replay (RFC 0056 §B/§D).
257
+ title: Run annotated
258
+ summary: 'A non-blocking quality annotation was recorded for the run. Live notification only, not a replayable run-event-log
259
+ entry: its payload is an `Annotation`, not a `RunEventDoc`, so it is excluded from fork and replay.'
257
260
  contentType: application/json
258
261
  payload:
259
262
  $ref: '#/components/schemas/Annotation'
260
263
  WorkspaceUpdated:
261
264
  name: workspace.updated
262
- title: Workspace file updated (RFC 0059)
263
- summary: A workspace file was created, replaced, or deleted via the host.workspace store. Content-free — carries the
264
- file path + resulting version only (the body is served by the read-side, SR-1-redacted). A replayable run-event-log
265
- entry (re-read from the log on replay, never regenerated); gated on capabilities.workspace.supported.
265
+ title: Workspace file updated
266
+ summary: 'A workspace file was created, replaced, or deleted through the `host.workspace` store. Content-free: it carries
267
+ the file path and resulting version only; the body is served by the read side, SR-1-redacted. A replayable run-event-log
268
+ entry, re-read from the log on replay and never regenerated. Gated on `capabilities.workspace.supported`.'
266
269
  contentType: application/json
267
270
  payload:
268
271
  $ref: '#/components/schemas/WorkspaceUpdatedPayload'
269
272
  HeartbeatEvaluated:
270
273
  name: heartbeat.evaluated
271
- title: Heartbeat evaluated (RFC 0060)
272
- summary: A heartbeat predicate was evaluated this tick (status + changed flag). Heartbeat-scoped observability.
274
+ title: Heartbeat evaluated
275
+ summary: A heartbeat predicate was evaluated this tick (status and a changed flag). Heartbeat-scoped observability.
273
276
  contentType: application/json
274
277
  payload:
275
278
  $ref: '#/components/schemas/HeartbeatEvaluated'
276
279
  HeartbeatStateChanged:
277
280
  name: heartbeat.stateChanged
278
- title: Heartbeat state changed (RFC 0060)
279
- summary: A heartbeat predicate's state transitioned; emitted ONLY on change (never on an unchanged tick). Heartbeat-scoped.
281
+ title: Heartbeat state changed
282
+ summary: A heartbeat predicate's state transitioned. Emitted only on a change, never on an unchanged tick. Heartbeat-scoped.
280
283
  contentType: application/json
281
284
  payload:
282
285
  $ref: '#/components/schemas/HeartbeatStateChanged'
@@ -306,23 +309,23 @@ components:
306
309
  $ref: '#/components/schemas/RunEventDoc'
307
310
  NodeDispatched:
308
311
  name: node.dispatched
309
- title: core.dispatch spawned a child workflow (RFC 0007 §D + RFC 0022 §A)
312
+ title: '`core.dispatch` spawned a child workflow'
310
313
  contentType: application/json
311
314
  payload:
312
315
  $ref: '#/components/schemas/RunEventDoc'
313
316
  DispatchFanOut:
314
317
  name: dispatch.fanned-out
315
- title: core.dispatch began a parallel fan-out wave (RFC 0118)
316
- summary: Emitted when a fanOutPolicy=parallel wave begins; payload $defs.dispatchFanOut carries childCount/maxConcurrency/joinMode.
317
- Parallel path only.
318
+ title: '`core.dispatch` began a parallel fan-out wave'
319
+ summary: Emitted when a `fanOutPolicy=parallel` wave begins; the payload (`$defs.dispatchFanOut`) carries `childCount`,
320
+ `maxConcurrency` and `joinMode`. Parallel path only.
318
321
  contentType: application/json
319
322
  payload:
320
323
  $ref: '#/components/schemas/RunEventDoc'
321
324
  DispatchJoin:
322
325
  name: dispatch.joined
323
- title: core.dispatch parallel join satisfied (RFC 0118)
324
- summary: Emitted when a fanOutPolicy=parallel join is satisfied/failed; payload $defs.dispatchJoin carries joinOutcome
325
- + the replay-deterministic mergeOrder.
326
+ title: '`core.dispatch` parallel join satisfied'
327
+ summary: Emitted when a `fanOutPolicy=parallel` join is satisfied or failed; the payload (`$defs.dispatchJoin`) carries
328
+ `joinOutcome` and the replay-deterministic `mergeOrder`.
326
329
  contentType: application/json
327
330
  payload:
328
331
  $ref: '#/components/schemas/RunEventDoc'
@@ -355,21 +358,9 @@ components:
355
358
  InterruptRequested:
356
359
  name: interrupt.requested
357
360
  title: Interrupt requested (canonical HITL primitive)
358
- summary: 'The discriminated-union form of the full `interrupt.md` kind union
359
-
360
- (RFC 0094 §E): approval / clarification / external-event / custom /
361
-
362
- conversation.start / conversation.exchange / conversation.close /
363
-
364
- low-confidence.
365
-
366
- Servers emitting `interrupt.requested` SHOULD also emit the legacy
367
-
368
- kind-specific event (`approval.requested` etc) for backward compat
369
-
370
- until consumers migrate.
371
-
372
- '
361
+ summary: 'The discriminated-union form of the full `interrupt.md` kind union: approval, clarification, external-event,
362
+ custom, conversation.start, conversation.exchange, conversation.close, low-confidence. Servers emitting `interrupt.requested`
363
+ SHOULD also emit the kind-specific event (`approval.requested` etc.) until consumers migrate.'
373
364
  contentType: application/json
374
365
  payload:
375
366
  $ref: '#/components/schemas/RunEventDoc'
@@ -389,13 +380,8 @@ components:
389
380
  StateSnapshot:
390
381
  name: state.snapshot
391
382
  title: Full projected run state
392
- summary: 'Synthesized event emitted by the server in `values` mode after
393
-
394
- each `updates`-tier transition. NOT a member of the canonical
395
-
396
- `RunEventType` enum — this is a per-mode synthetic.
397
-
398
- '
383
+ summary: Synthesized event the server emits in `values` mode after each `updates`-tier transition. It is not a member
384
+ of the canonical `RunEventType` enum; it is a per-mode synthetic.
399
385
  contentType: application/json
400
386
  payload:
401
387
  $ref: '#/components/schemas/StateSnapshotPayload'
@@ -409,27 +395,11 @@ components:
409
395
  AnyRunEvent:
410
396
  name: any
411
397
  title: Any RunEventDoc
412
- summary: 'Type-erased handler for `debug` mode — discriminate on the
413
-
414
- `type` field per the `RunEventType` enum in the run-event
415
-
416
- JSON Schema (the authoritative, exhaustive event list; the
417
-
418
- named messages above are a curated `updates`-tier subset).
419
-
420
- Includes events filtered out of `updates`: `log.appended`,
421
-
422
- `variable.changed`, `version.pinned`, `lease.*`, `node.retried`,
423
-
424
- `replay.diverged`, `connector.authorized`,
425
-
426
- `connector.auth_expired` (RFC 0047), `authorization.decided`
427
-
428
- (RFC 0049), `approval.granted` / `approval.rejected` /
429
-
430
- `approval.overridden` (RFC 0051), etc.
431
-
432
- '
398
+ summary: 'Type-erased handler for `debug` mode. Discriminate on the `type` field using the `RunEventType` enum in the
399
+ run-event JSON Schema, the authoritative and exhaustive event list; the named messages above are a curated `updates`-tier
400
+ subset. Includes events filtered out of `updates`: `log.appended`, `variable.changed`, `version.pinned`, `lease.*`,
401
+ `node.retried`, `replay.diverged`, `connector.authorized`, `connector.auth_expired`, `authorization.decided`, `approval.granted`
402
+ / `approval.rejected` / `approval.overridden`, etc.'
433
403
  contentType: application/json
434
404
  payload:
435
405
  $ref: '#/components/schemas/RunEventDoc'
@@ -477,11 +447,11 @@ components:
477
447
  $ref: '#/components/schemas/RunEventDoc'
478
448
  RunEvent:
479
449
  name: runEvent
480
- title: Run event (RFC 0171 §A)
450
+ title: Run event
481
451
  contentType: text/event-stream
482
452
  payload:
483
453
  $ref: ../../schemas/v2/run-event.schema.json
484
- description: One SSE frame per run event; `event:` is the v2 type, `id:` is the sequence (RFC 0171 §A.3).
454
+ description: 'One SSE frame per run event: `event:` is the v2 type and `id:` is the sequence.'
485
455
  schemas:
486
456
  RunEventDoc:
487
457
  $ref: ../../schemas/v2/run-event.schema.json