@openwop/spec-artifacts 2.2.3 → 2.3.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.
package/CORPUS-STAMP.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "_comment": "Provenance of @openwop/spec-artifacts (RFC 0168 §D.2). files: SHA-256 per file; the conformance suite compares the installed peer against dist/spec-artifacts.lock.json at start.",
3
3
  "package": "@openwop/spec-artifacts",
4
- "version": "2.2.3",
5
- "corpusTag": "v2.2.3",
4
+ "version": "2.3.0",
5
+ "corpusTag": "v2.3.0",
6
6
  "files": {
7
7
  "api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
8
8
  "api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
9
9
  "api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
10
10
  "api/openapi.yaml": "39081c59fb696159806b0f2f9a42e7e9ff830d622fcf2ad4159b21357580a955",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "43a0aa0f08070b9d51a1651d5edc96f936ed814617bb0af85eac2b7186711295",
13
- "api/v2/asyncapi.yaml": "a32add439289805a6303b36f31ff54ff9c728dea1e9a98ab417b6b339215f025",
14
- "api/v2/openapi.yaml": "8b8c18154b77775f9d11918a3182e6c4396f2a4c2065bee0dbe7056dafc775da",
12
+ "api/seams-v2.yaml": "4d90674341e8de143a3149d58303ae79e46dc44a1b1287a779a4690885775f9e",
13
+ "api/v2/asyncapi.yaml": "680960e1acaf412175cb57f5eaceb2bd42a443c216fb4f4be6394f7fc095f7cf",
14
+ "api/v2/openapi.yaml": "7cdd4e2aa97d8b042df5f0d53943d56b83c1ad00f0c9687fa0ab9e8d9dc9d822",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
17
17
  "schemas/a2a-task-state.schema.json": "c9365918f993f943b4b619d42551eb066a1ed33a08d895d51b395432a5b1f1bc",
@@ -125,7 +125,7 @@
125
125
  "schemas/v2/compensation-projection.schema.json": "f46977c7076347b5473faa8c4bbe73d8321c33b33c98fff2f26ee7cbada4ed98",
126
126
  "schemas/v2/configurable.schema.json": "33a6884047e2490f723733bf8b74d3b9164e00374cfea6dc3eac5a70dc368861",
127
127
  "schemas/v2/connection-pack-manifest.schema.json": "7410a3011b28829b286e3ff764bdb283854dca69ea4b71a8441f8c1c4f1cc948",
128
- "schemas/v2/conversation-event.schema.json": "80833d0bf72245118d23e5aebdf497aa5a4c79b0b53c262f38b6489753557f33",
128
+ "schemas/v2/conversation-event.schema.json": "e87b7fb36ab4ca0afe9f77993654065b28b67e5f24b20175907f90e238942025",
129
129
  "schemas/v2/conversation-turn.schema.json": "4c24aa85dd83f6ad00945b4a13ee8ff0a071893e884011e9289a07e97d22989d",
130
130
  "schemas/v2/credential-provenance.schema.json": "f86b09e94b1c524dec7d1c6353965665ae8891e9517faef6e742d639c5578c99",
131
131
  "schemas/v2/credential-reference.schema.json": "ea699ce30f58fb2c32d4279158b3f730f70be7b2dc8c3037693a76e66eb3e001",
@@ -169,7 +169,7 @@
169
169
  "schemas/v2/residency.schema.json": "3fd23c9732beb140504e81560fc426eb6764d547e56da5fb92c5a5c7bf04db3a",
170
170
  "schemas/v2/run-ancestry-response.schema.json": "334c17f2062dea62726ca1d07b8be3f169cdc422af843c1def5fb317039814c9",
171
171
  "schemas/v2/run-diff-response.schema.json": "8bdb2045c274580038bd74781f7d062f5049839797c164a89de4ed89edc53a74",
172
- "schemas/v2/run-event-payloads.schema.json": "3f6c256871970cdfa789d4b7e353bc96975cc17319e769c73d2dfd80fbc9670c",
172
+ "schemas/v2/run-event-payloads.schema.json": "72f48eacb8aa3ed9b2f33c33de1f993c4cff4e086f943fd5793a1bb73c42335d",
173
173
  "schemas/v2/run-event.schema.json": "1a9946374af9323b71635d00fed22abe02c300fa2cf3ae3e9c30f3e553e408ec",
174
174
  "schemas/v2/run-list-response.schema.json": "c2dbc34768dcf64528914a213aa3cb55952e8e3e90a64b04a9423b2a19749d38",
175
175
  "schemas/v2/run-options.schema.json": "f0e9f494d80086c2ed2cf9fe87df54e5b4e66601699c4a1089f4edbc7ba58867",
@@ -181,7 +181,7 @@
181
181
  "schemas/v2/self-hosted-runner-result-frame.schema.json": "5a427362073720fb0e7b4a76143210083c017cac63e27eb3a91289bc7a443aaf",
182
182
  "schemas/v2/subject-link.schema.json": "1fc941d6c14af886534009f2ffa6611e2035eb07e30b1df918c50d6bafff026c",
183
183
  "schemas/v2/subject.schema.json": "094e981fb20052a911393e219ea5f2065d8b8417b65080a70c5ea99fd960a8fe",
184
- "schemas/v2/suspend-request.schema.json": "28451d35f4f49a075d26b2be7e0d1cd2287a196b3d41819edf146fdc8c862756",
184
+ "schemas/v2/suspend-request.schema.json": "4a0dda88a257cdb21c9b57fc9ad898d91de0d75bc4944a693eb950b709f58c91",
185
185
  "schemas/v2/tool-descriptor.schema.json": "658b18ef173e0f12d732f92d4866a9b3daeb8f88b493db8b025a577e09dd681c",
186
186
  "schemas/v2/trigger-event.schema.json": "7227fb9a130c33374fa8eab35e4448c4e8f22c962b8f271781cf4dbb5e4288b7",
187
187
  "schemas/v2/trigger-subscription-registration.schema.json": "04bc314a07c7e8b565577cb8df5821d968ce2af915900dfdccd4a24e928d20db",
@@ -200,7 +200,7 @@
200
200
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
201
201
  "spec/v1/alias-detectors.json": "fee4594ef49953953ffcd0b3813300067d16b3e65ebff2aac722034ac9b3f545",
202
202
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
203
- "spec/v1/core-standard-manifest.json": "9f5501b6c3406ace7df7c4a53501d47745480df76b65d65ac2d298045a73d41d",
203
+ "spec/v1/core-standard-manifest.json": "353689969f787aafdc836925f762fb988640e6cef14924bc0b6af7d7c02ed7a8",
204
204
  "spec/v1/deprecations.json": "a2022c2d6eb501bf406b5d75fe2d431a3fe0158e8509125d2453985eb1bf511a",
205
205
  "spec/v1/deprecations.schema.json": "18c87e78bedc210431f795ae44c5b5d202f2f3317850d5cf86867d4f1fa1cdfb",
206
206
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
@@ -270,8 +270,8 @@
270
270
  "spec/v2/path-manifest.json": "a6f4e652e866889e8bde815874062f62929aee95dc8e58e7152c56adee262163",
271
271
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
272
272
  "spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
273
- "spec/v2/release.json": "9a258b0740e7c26f74dbd56b2816407b7d0ac39cff2873b20e8171f3d8e5239b",
273
+ "spec/v2/release.json": "4dac86d9d990d76f5e0971eb5e1b55d366ad9372e07e68a67a4012dce56be377",
274
274
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
275
275
  },
276
- "corpusCommit": "f3d945720da0143ed932f50281ebe94c3162c063"
276
+ "corpusCommit": "c4d3f8528dc380210f87a94d595fff246775c00a"
277
277
  }
package/api/seams-v2.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP conformance seams profile (openwop-conformance-seams-v2)
4
- version: 2.2.3
4
+ version: 2.3.0
5
5
  description: 'GENERATED by scripts/derive-v2-api.py. RFC 0168 §C: the seams are a versioned conformance profile with their
6
6
  own document and path space (/conformance/seams/…), validated against the canonical v2 schemas with no tolerance path,
7
7
  forbidden from the capability namespace (a host advertises the profile, never a testSeams flag). This document carries
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.2.3
4
+ version: 2.3.0
5
5
  description: GENERATED by scripts/derive-v2-api.py (RFC 0171 §E.1, RFC 0172 §C.2). One run-events channel whose address
6
6
  is the OpenAPI path key; the server pathname is empty (bare origin). streamMode is a pattern over the closed set and its
7
7
  comma-separated combinations (`values` never combines). hostEvents has a real address (RFC 0171 §E.1) — the documented
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.2.3
4
+ version: 2.3.0
5
5
  summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
6
6
  description: GENERATED by scripts/derive-v2-api.py from api/openapi.yaml and the RFC 0167 children (v2 charter Phase 3,
7
7
  P3-C). Bare origin, unversioned path keys, negotiation by `OpenWOP-Version` + `protocolVersions[]` (RFC 0172 §A). No seam
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.2.3",
3
+ "version": "2.3.0",
4
4
  "description": "The OpenWOP machine-readable contract: api/ (OpenAPI, AsyncAPI, the seams profile), schemas/ (v1 and v2 JSON Schemas), the spec/v1 and spec/v2 registries (errors, event codemap, declaration, deprecations, migrations, gaps) and CORPUS-STAMP.json — published from the openwop/openwop corpus tag; the peer dependency @openwop/openwop-conformance digest-checks at start (RFC 0168 §D.2).",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -214,30 +214,8 @@
214
214
  ]
215
215
  },
216
216
  "ConversationExchangedPayload": {
217
- "type": "object",
218
- "description": "Payload for `RunEventType: 'conversation.exchanged'`. Emitted on each `operation: 'exchange'` turn round-trip. The `turnIndex` MUST monotonically increase within a `conversationId`.",
219
- "required": [
220
- "conversationId",
221
- "turnIndex",
222
- "turn"
223
- ],
224
- "properties": {
225
- "conversationId": {
226
- "type": "string",
227
- "description": "MUST match the `conversation.opened` payload's `conversationId`.",
228
- "minLength": 1,
229
- "maxLength": 256
230
- },
231
- "turnIndex": {
232
- "type": "integer",
233
- "minimum": 1,
234
- "description": "1-based index within the conversation. `conversation.opened.initialTurn` is `turnIndex: 0`; the first `exchanged` is `turnIndex: 1`; etc."
235
- },
236
- "turn": {
237
- "$ref": "#/$defs/ConversationTurn"
238
- }
239
- },
240
- "additionalProperties": false
217
+ "$ref": "run-event-payloads.schema.json#/$defs/conversationExchanged",
218
+ "description": "RFC 0186 §A.1 — an ALIAS of the codemap-bound def, kept so this file's own `$ref` and any consumer that reached this name keep resolving. Until 0186 this was a second, closed def for the same event that REQUIRED `turn` while the bound def could not carry it; a tier-1 host emitted this shape and failed the bound def for as long as both existed. The union lives in one place now and `turn` is optional there."
241
219
  },
242
220
  "ConversationClosedPayload": {
243
221
  "type": "object",
@@ -1283,6 +1283,12 @@
1283
1283
  ],
1284
1284
  "description": "RFC 0094 \u00a7E \u2014 the full kind union `interrupt.md` defines (mirrors suspend-request.schema.json). Conversation kinds are gated on the conversation capability per capabilities.md."
1285
1285
  },
1286
+ "reason": {
1287
+ "type": "string",
1288
+ "minLength": 1,
1289
+ "maxLength": 64,
1290
+ "description": "RFC 0186 §A.2 — WHY this happened without a human, a CAUSE axis disjoint from `kind` (the interrupt kind), RFC 0183 `decision` (what was decided) and `action` (how the resume applied). A string with a documented domain rather than an enum, because the domain is host-grown: `timeout`, `condition`, `false-positive`, `over-threshold`, `quorum-reject`, `timer` are the values two production hosts record today. Measured single-valued `timeout` on one host at `interrupt.resolved`; dropped on 350 rows of `node.suspended` on the other."
1291
+ },
1286
1292
  "key": {
1287
1293
  "type": "string",
1288
1294
  "minLength": 1
@@ -1419,6 +1425,12 @@
1419
1425
  ],
1420
1426
  "description": "RFC 0094 \u00a7E \u2014 the full kind union `interrupt.md` defines (mirrors suspend-request.schema.json). Conversation kinds are gated on the conversation capability per capabilities.md."
1421
1427
  },
1428
+ "reason": {
1429
+ "type": "string",
1430
+ "minLength": 1,
1431
+ "maxLength": 64,
1432
+ "description": "RFC 0186 §A.2 — WHY this happened without a human, a CAUSE axis disjoint from `kind` (the interrupt kind), RFC 0183 `decision` (what was decided) and `action` (how the resume applied). A string with a documented domain rather than an enum, because the domain is host-grown: `timeout`, `condition`, `false-positive`, `over-threshold`, `quorum-reject`, `timer` are the values two production hosts record today. Measured single-valued `timeout` on one host at `interrupt.resolved`; dropped on 350 rows of `node.suspended` on the other."
1433
+ },
1422
1434
  "resumeValue": {},
1423
1435
  "resolvedBy": {
1424
1436
  "$ref": "subject.schema.json",
@@ -2991,6 +3003,10 @@
2991
3003
  "minimum": 0,
2992
3004
  "description": "0-indexed turn within this conversation. Strictly monotonic."
2993
3005
  },
3006
+ "turn": {
3007
+ "$ref": "conversation-event.schema.json#/$defs/ConversationTurn",
3008
+ "description": "RFC 0186 §A.1 — the turn content. Until 0186 this def and `conversation-event.schema.json` `ConversationExchangedPayload` were two CLOSED defs for one event that could not both be satisfied: this one seated `outcome` and not `turn`, the other `turn` and not `outcome`, and the codemap bound this one while a tier-1 host emitted the other. One production host writes `turn` and never `outcome`; the other writes `outcome` (the `ctx.suspend` resume value) and never `turn`. Both are optional here so the union is a strict widening of both prior shapes."
3009
+ },
2994
3010
  "outcome": {
2995
3011
  "description": "Validated turn outcome per the per-turn schema declared in `core.conversationGate` config."
2996
3012
  }
@@ -93,6 +93,11 @@
93
93
  "type": "string",
94
94
  "minLength": 1
95
95
  },
96
+ "onTimeout": {
97
+ "type": "string",
98
+ "enum": ["reject", "approve", "escalate"],
99
+ "description": "RFC 0186 §A.3 — the disposition applied when `timeoutMs` elapses with no resolution. Every gate with a timer needs one; two production hosts recorded it as a bare key on `approval.requested` (280 rows on one) because the seat did not exist. `escalate` pairs with a host-defined escalation target. A `timeoutMs` of `0` means no timer, and `onTimeout` is then meaningless."
100
+ },
96
101
  "description": {
97
102
  "type": "string"
98
103
  },
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.2.3"
7
+ "version": "2.3.0"
8
8
  },
9
9
  "note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
10
10
  },
@@ -419,5 +419,5 @@
419
419
  "$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
420
420
  }
421
421
  ],
422
- "digest": "a06515ae652846bd0c51fec803771e7c69c90896f316acb6f8407c624d6c0215"
422
+ "digest": "925375b1021d4f14d902495b55fbef4e3f59444cff8e48c33c195b6cd229717d"
423
423
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "RFC 0172 §D.1 — the one release identity the v2 artifacts derive from. `version` is the next corpus tag `v<version>` (the publish workflow's coordinated-release tag pattern `v*`; RFC 0172's `openwop/v2.<minor>.<patch>` spelling is amended to this at its flip). api/v2/*.yaml info.version, the suite's 2.x version and @openwop/spec-artifacts read it. Bumped by the release PR that cuts the tag, never by hand elsewhere.",
3
- "version": "2.2.3",
4
- "corpusTag": "v2.2.3",
3
+ "version": "2.3.0",
4
+ "corpusTag": "v2.3.0",
5
5
  "updated": "2026-09-16"
6
6
  }