@openwop/spec-artifacts 2.45.30 → 2.46.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.
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.45.30",
5
- "corpusTag": "v2.45.30",
4
+ "version": "2.46.1",
5
+ "corpusTag": "v2.46.1",
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": "ac6de5303872664b78ff419c035915593e01599e02835e777a0123de1baeb398",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "87950b612a26253dfce8dd55703b32ca164e61c56ba6d038e40626e3e6d69b1e",
13
- "api/v2/asyncapi.yaml": "99aef28ec33b361d146d2b176714122f95c444967de4993f416f54b17a37ac81",
14
- "api/v2/openapi.yaml": "97ed2c29a064cfce269dc746503e4059c42093e64590ae828de9f392917698dc",
12
+ "api/seams-v2.yaml": "698ff413d4ab103656f15f784ecde2b72191dd9c48d47a459c3fed9c6ac5d65a",
13
+ "api/v2/asyncapi.yaml": "31709ec59884ad87f2193ad5a855390ce05647a1ca507ab1aa31dd7b615e614a",
14
+ "api/v2/openapi.yaml": "f00d724b067ccbad46d7d9d103efc641ced8118533af2346465559b286f04f86",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "276fc1d51eb08e14e9127b9fd27761d7046ee33c12000f3a64a801322db8bf58",
17
17
  "schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
@@ -152,7 +152,7 @@
152
152
  "schemas/v2/goal.schema.json": "ad104ed5a3866736b8fed9d7c0b23dc82af526b5bef4afe848f01fc3af2161e9",
153
153
  "schemas/v2/heartbeat-evaluated.schema.json": "c897b0792fd518d6e12879851027252af1529f5e420c3eaf434ad7af284ecc05",
154
154
  "schemas/v2/heartbeat-state-changed.schema.json": "eb68d0082aa996650e3a6b8ccf32457f959cebc7e6728cc7c331b9d171a4bef6",
155
- "schemas/v2/host-event.schema.json": "655b5475b1aeb41c8fc4ff7b6fc7e31a0fcc18fd59f368336ccbc138e6ba395e",
155
+ "schemas/v2/host-event.schema.json": "8ecb5ae218ea6ba71b2aa52905c7851d125d6ca3c5108718739e84b3d6041d02",
156
156
  "schemas/v2/ids.schema.json": "65cfaa193be0ca9cf48af39c18c553979e3ec1f7fc04509aaa513b322d7b7e4a",
157
157
  "schemas/v2/localized-content-language-settings.schema.json": "3c8350a178037a460f5d87466ccaf9ed5fe3d41497786d2504cc66e42152c8cc",
158
158
  "schemas/v2/localized-content-page-response.schema.json": "ef48329749758afb21e4d3cbc3f017abb911f75726819457f35b9f1390332c75",
@@ -174,7 +174,7 @@
174
174
  "schemas/v2/residency.schema.json": "3fd23c9732beb140504e81560fc426eb6764d547e56da5fb92c5a5c7bf04db3a",
175
175
  "schemas/v2/run-ancestry-response.schema.json": "334c17f2062dea62726ca1d07b8be3f169cdc422af843c1def5fb317039814c9",
176
176
  "schemas/v2/run-diff-response.schema.json": "8bdb2045c274580038bd74781f7d062f5049839797c164a89de4ed89edc53a74",
177
- "schemas/v2/run-event-payloads.schema.json": "cb331e0b5adf8374124426a77a4f5c915df62b944e97cdaf3107cfe44733a629",
177
+ "schemas/v2/run-event-payloads.schema.json": "ff80204f4a9a55da482d8c7d54d6dbb8682e13fff155d4fc26fa5b7fa0790b83",
178
178
  "schemas/v2/run-event.schema.json": "2f0d7416bd376c56affe97b6b2b49981532e8e9ff45c0a162cf806c78b3e7fb7",
179
179
  "schemas/v2/run-list-response.schema.json": "c2dbc34768dcf64528914a213aa3cb55952e8e3e90a64b04a9423b2a19749d38",
180
180
  "schemas/v2/run-options.schema.json": "f0e9f494d80086c2ed2cf9fe87df54e5b4e66601699c4a1089f4edbc7ba58867",
@@ -208,14 +208,14 @@
208
208
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
209
209
  "spec/v1/alias-detectors.json": "22444c22bb88c568339ef512553f9fc38146e22b566d11ab8608f655d688d19c",
210
210
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
211
- "spec/v1/core-standard-manifest.json": "1b343f616416e2b92ae3c085bc147f6fb23aa9d366a4488431207e3d0f86bd97",
211
+ "spec/v1/core-standard-manifest.json": "cab62b59436a7b57339098abd99d90217b1ca310451dff63837ff27ab90e3a04",
212
212
  "spec/v1/deprecations.json": "e723bc11d7272c71789ad1303bb7f21809a8a024abf57594f9d5c35dc199ece9",
213
213
  "spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
214
214
  "spec/v1/end-of-support.json": "35f0bf3b70fe78b16e2a2fd81a153fc27e703f6c16376c6fe7cdf1f4f2c4e6d4",
215
215
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
216
216
  "spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
217
217
  "spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
218
- "spec/v1/gaps.json": "44a1f30d4dd851ac7609fef7dfbd3f7e55404f97130dbe094132f9cd4b71c468",
218
+ "spec/v1/gaps.json": "132a59a97d6a9d1f5a5247062bdf69327256f7a3022b9590fd9481200001ab21",
219
219
  "spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
220
220
  "spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
221
221
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
@@ -228,7 +228,7 @@
228
228
  "spec/v2/core/connection-packs.md": "c80f95bd6a03698f35c72cdb2b46bd973f49203bbd786c26760e35fa86e6f23d",
229
229
  "spec/v2/core/conversation.md": "8d6abedf6af408a74577753bfca24719d318e2632e10b45ff5d63bdcf31a8aaa",
230
230
  "spec/v2/core/errors.md": "e48838701b86bbfe0ffee77b18a8ffc4e5f04724b4318507d9771da653f8da0f",
231
- "spec/v2/core/events.md": "d0f902edc080e9789e4fd05850a1264d905ebe5b06045b6a7a22486e22ef3091",
231
+ "spec/v2/core/events.md": "370621629c2439747f2e4ddab4780eea4345354f79e5098739d66823873f3105",
232
232
  "spec/v2/core/execution.md": "8a0c9db1bbfb97c008ab9328b7333c1cc3318196e78bfbefb49e781bdf4f9d44",
233
233
  "spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
234
234
  "spec/v2/core/headers.md": "f69fe81e4a3ad21879bb85948660c16860eb05bf152928c31aa4898f6d7d1887",
@@ -236,7 +236,7 @@
236
236
  "spec/v2/core/i18n.md": "882904b7d59f992ab1e5f7346167161a54cf665b8fee47e64a3862cf9133a580",
237
237
  "spec/v2/core/idempotency.md": "adbd317a6ebb57c2759c076297b31f67def9e391576bccd0bbea787b13e85872",
238
238
  "spec/v2/core/identity.md": "02656ffa413b5546342b8580ae928a74e621460746df74d7db50ff4df41d2310",
239
- "spec/v2/core/interop.md": "fb1d72bb76afda1c2b4394daf019982c207dbb490087ab141daf6eb2446e2eef",
239
+ "spec/v2/core/interop.md": "6ec8259117bdb387b9323ca22c707b3b8571c00034e461c4ce79f4070c4d6b4a",
240
240
  "spec/v2/core/interrupt.md": "10f15dfe30baa0fc748aea0a067f9b271bea316fde6b598d78f77edc296f698a",
241
241
  "spec/v2/core/node-pack-runtimes.md": "e1088cb69b8c3c67256c494063328916c2980ab1aa97a7063de25bab82fdb1e5",
242
242
  "spec/v2/core/oauth.md": "c069ae4f9aae2eafe14c07c0bf709aa7ade0dcc821973d740400d49d901f7061",
@@ -313,9 +313,9 @@
313
313
  "spec/v2/path-manifest.json": "7b5679a4dad98c80d855361d88a98c8a4e045af15e310862a05b285b815dc9fc",
314
314
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
315
315
  "spec/v2/profiles.json": "3d84d7712e93d1e823e362615d5f4aaba0789ea4e044b3774965876fbb8829a7",
316
- "spec/v2/release.json": "b7dea408ef966d034c55aeb0987fe926d88c4009479bd92816c7c87acfb384cf",
316
+ "spec/v2/release.json": "4facb248b7147ef0568bf434973a8a116d8f39f293e5c23665257f94c97cb3fe",
317
317
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
318
- "spec/v2/surface-baseline.json": "5f58750fdbd55de45cf31c1f7dee09f68c7b1a40c86d20a046f8c2bc52c0c740"
318
+ "spec/v2/surface-baseline.json": "01a3e01c87e2b5fdbf4c6290e5730726acc195801c97b1f23c4297897b6d3979"
319
319
  },
320
- "corpusCommit": "0f13b5191bd0e29c8b4a8219a059361e27834ea2"
320
+ "corpusCommit": "010da68bf57d317c7faeeda29f26bedfb3406a49"
321
321
  }
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.45.30
4
+ version: 2.46.1
5
5
  description: 'The OpenWOP conformance seams profile (`openwop-conformance-seams-v2`): test-only operations in their own
6
6
  path space, `/conformance/seams/…`. The profile is versioned and validated against the canonical v2 schemas with no tolerance
7
7
  path. It is not a capability: a host advertises the profile, never a `testSeams` flag.
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.45.30
4
+ version: 2.46.1
5
5
  description: 'OpenWOP v2 event streams over SSE. The run-events channel''s address is the OpenAPI path key, and the server
6
6
  pathname is empty (bare origin). `streamMode` is a stream mode from the closed set, or a comma-separated combination of
7
7
  them; `values` never combines. `hostEvents` has a default address, `/host/events`; a host MAY declare another under `heartbeat.deliveryChannel`.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.45.30
4
+ version: 2.46.1
5
5
  summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
6
6
  description: 'The OpenWOP v2 REST API. Paths are unversioned and served at the bare origin; a client selects a version with
7
7
  the `OpenWOP-Version` header from the host''s `protocolVersions[]`. Conformance seams and test-mode operations are not
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.45.30",
3
+ "version": "2.46.1",
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": {
@@ -20,7 +20,7 @@
20
20
  "type": {
21
21
  "type": "string",
22
22
  "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*\\.[a-z][a-z0-9]*(-[a-z0-9]+)*$",
23
- "description": "A protocol host-event type (`channel.presence`) or a vendor type `org.name` whose org is registered (`events.md` §Naming)."
23
+ "description": "A protocol host-event type (`channel.presence`, `negotiation.decided`, `host-test.*`) or a vendor type `org.name` whose org is registered (`events.md` §Naming)."
24
24
  },
25
25
  "timestamp": {
26
26
  "type": "string",
@@ -106,6 +106,26 @@
106
106
  }
107
107
  }
108
108
  }
109
+ },
110
+ {
111
+ "if": {
112
+ "properties": {
113
+ "type": {
114
+ "const": "negotiation.decided"
115
+ }
116
+ }
117
+ },
118
+ "then": {
119
+ "properties": {
120
+ "delivery": {
121
+ "const": "durable"
122
+ },
123
+ "payload": {
124
+ "$ref": "run-event-payloads.schema.json#/$defs/negotiationDecided",
125
+ "description": "RFC 0242 §B: a negotiation made outside any run (an inbound A2A or MCP exchange), recorded with the run event's payload."
126
+ }
127
+ }
128
+ }
109
129
  }
110
130
  ],
111
131
  "examples": [
@@ -4340,6 +4340,10 @@
4340
4340
  "type": "string",
4341
4341
  "description": "The version or revision decided (absent when refused below the floor)."
4342
4342
  },
4343
+ "requested": {
4344
+ "type": "string",
4345
+ "description": "RFC 0242 §A — the version or revision the requesting side named: inbound, the caller's (`A2A-Version`, MCP `initialize` `protocolVersion`); outbound, the one the host asked the peer for. MUST be present whenever one was named. A downgrade is an `accepted` record whose `version` differs from it."
4346
+ },
4343
4347
  "floor": {
4344
4348
  "type": "string"
4345
4349
  },
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.45.30"
7
+ "version": "2.46.1"
8
8
  },
9
9
  "note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
10
10
  },
@@ -426,5 +426,5 @@
426
426
  "$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
427
427
  }
428
428
  ],
429
- "digest": "5e43b10f2e7d168d293c77730aca6deb5bb991bb66c254f1c41dcaeb24670834"
429
+ "digest": "782907335f4c2fc4588696f50ce26a53890510441527c73b69c225910742b118"
430
430
  }
package/spec/v1/gaps.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "./gaps.schema.json",
3
3
  "version": 1,
4
- "updated": "2026-10-09",
4
+ "updated": "2026-10-11",
5
5
  "witnessClasses": [
6
6
  "witnessable-unaided",
7
7
  "witnessable-gated",
@@ -14462,6 +14462,40 @@
14462
14462
  }
14463
14463
  ]
14464
14464
  },
14465
+ {
14466
+ "id": "openwop.gap.0242.1",
14467
+ "rfc": "0242",
14468
+ "local": "G1",
14469
+ "section": "§B, §D",
14470
+ "surface": "No host records an inbound negotiation as a host event or lists the reserved type, so B.2 and B.3 have no witness.",
14471
+ "witness": "unclassified",
14472
+ "requirementId": null,
14473
+ "disposition": "closed",
14474
+ "target": null,
14475
+ "sources": [
14476
+ {
14477
+ "file": "RFCS/registers/0242-negotiation-decided-requested-and-inbound.gaps.md",
14478
+ "token": "G1"
14479
+ }
14480
+ ]
14481
+ },
14482
+ {
14483
+ "id": "openwop.gap.0242.2",
14484
+ "rfc": "0242",
14485
+ "local": "G2",
14486
+ "section": "§A.3",
14487
+ "surface": "No host in `INTEROP-MATRIX.md` offers a version between its floor and its preferred version, so no host can be shown to record a downgrade above the floor.",
14488
+ "witness": "unclassified",
14489
+ "requirementId": null,
14490
+ "disposition": "externally-gated",
14491
+ "target": "host-floor-below-preferred",
14492
+ "sources": [
14493
+ {
14494
+ "file": "RFCS/registers/0242-negotiation-decided-requested-and-inbound.gaps.md",
14495
+ "token": "G2"
14496
+ }
14497
+ ]
14498
+ },
14465
14499
  {
14466
14500
  "id": "openwop.gap.spec.a2a-integration.g1",
14467
14501
  "rfc": "0152",
@@ -133,6 +133,8 @@ A host event's envelope (`schemas/v2/host-event.schema.json`) has no `runId` or
133
133
  - MUST confine an event naming a `workspaceId` to that workspace, and an ephemeral event to subscribers it is visible to;
134
134
  - MUST emit each listed `host-test.*` type, only through `emitTestHostEvent`, to the caller's tenant.
135
135
 
136
+ `negotiation.decided` is reserved and durable ([interop.md](interop.md)).
137
+
136
138
  An ephemeral event MUST NOT be persisted, redelivered on reconnection, or sent through webhooks, A2A push or any sink; its frame has no `id:`. A durable event's `id:` is its `eventId`, and a host SHOULD honour `Last-Event-ID` for it within retention. A vendor payload MUST NOT carry secrets.
137
139
 
138
140
  #### `heartbeat`
@@ -41,18 +41,11 @@ When no `A2A-Version` header is present, a host MUST serve the agent card of `pr
41
41
 
42
42
  **The floor.** A negotiation that would land below `minimumVersion` / `minimumRevision` MUST fail closed with `interop_version_unsupported` (`spec/v2/errors.json`), whether or not host policy permits an explicit downgrade above the floor.
43
43
 
44
- **The audit event.** Every negotiation outcome, including the refused one, MUST emit a `negotiation.decided` event on the host's own event log:
45
-
46
- ```jsonc
47
- { "protocol": "a2a" | "mcp", "peer": "<origin digest>", "requested": "…",
48
- "negotiated": "…" | null, "outcome": "accepted" | "downgraded" | "refused", "reason": "…" }
49
- ```
50
-
51
- The event is content-free: `peer` MUST be a digest of the peer origin, never the origin in clear. The event is the normative witness of the invariants `a2a-version-no-silent-downgrade` and `mcp-version-no-silent-downgrade`.
44
+ **The audit event.** Every negotiation outcome, refusals included, MUST emit a content-free `negotiation.decided` record (`run-event-payloads.schema.json#/$defs/negotiationDecided`): on its run's log, or, with no run, as the caller's durable host event. `peerDigest` MUST be the peer origin's digest; `requested` MUST carry any version the requester named. It witnesses `a2a-version-no-silent-downgrade` and `mcp-version-no-silent-downgrade`. A host serving either protocol inbound (`a2a.agentCardUrl`, `mcp.serverUrls`, `mcp.serverMount`) MUST list it as a durable `hostEvents` type.
52
45
 
53
46
  **The refresh SLA.** A host MUST re-evaluate its advertised `versions[]` / `revisions[]` against the upstream registry within the window its `refreshedAt` declares, and that window MUST NOT exceed 90 days. An advertisement older than its window is non-conformant.
54
47
 
55
- **Downgrade above the floor.** A host MAY accept an authenticated request for a version between the floor and `preferredVersion`; the event then reports `outcome: downgraded`.
48
+ **Downgrade above the floor.** A host MAY accept an authenticated request for a version between the floor and `preferredVersion`; its record is `accepted` with a `version` other than `requested`.
56
49
 
57
50
  ## The operation mappings
58
51
 
@@ -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.45.30",
4
- "corpusTag": "v2.45.30",
5
- "updated": "2026-10-08"
3
+ "version": "2.46.1",
4
+ "corpusTag": "v2.46.1",
5
+ "updated": "2026-10-11"
6
6
  }
@@ -4,7 +4,7 @@
4
4
  "schemas/v2/**/*.json",
5
5
  "spec/v2/path-manifest.json"
6
6
  ],
7
- "release": "2.45.30",
7
+ "release": "2.46.1",
8
8
  "kinds": {
9
9
  "union": [
10
10
  "channel",