@openwop/spec-artifacts 2.3.3 → 2.4.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 +46 -46
- package/api/seams-v2.yaml +1 -1
- package/api/v2/asyncapi.yaml +1 -1
- package/api/v2/openapi.yaml +8 -4
- package/package.json +1 -1
- package/schemas/v2/form-content-pack-manifest.schema.json +31 -0
- package/schemas/v2/ids.schema.json +7 -7
- package/schemas/v2/run-event.schema.json +1 -1
- package/schemas/v2/trigger-subscription.schema.json +2 -3
- package/schemas/v2/webhook-delivery.schema.json +5 -5
- package/schemas/v2/workflow-chain-pack-manifest.schema.json +41 -40
- package/spec/v1/alias-detectors.json +7 -1
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/deprecations.json +86 -68
- package/spec/v1/gaps.json +41 -825
- package/spec/v1/spec-gaps.json +0 -784
- package/spec/v2/README.md +54 -15
- package/spec/v2/core/conformance.md +9 -7
- package/spec/v2/core/events.md +6 -1
- package/spec/v2/core/headers.md +1 -1
- package/spec/v2/core/interrupt.md +6 -0
- package/spec/v2/core/persistence.md +10 -7
- package/spec/v2/core/security-defaults.md +6 -7
- package/spec/v2/core/versioning.md +19 -7
- package/spec/v2/core/webhooks.md +4 -1
- package/spec/v2/ext/README.md +23 -13
- package/spec/v2/ext/a2uiSurface/README.md +18 -7
- package/spec/v2/ext/brand/README.md +18 -7
- package/spec/v2/ext/canvas/README.md +18 -7
- package/spec/v2/ext/chat/README.md +18 -7
- package/spec/v2/ext/coordination/README.md +18 -7
- package/spec/v2/ext/dataIntegration/README.md +18 -7
- package/spec/v2/ext/entities/README.md +18 -7
- package/spec/v2/ext/grpc-transport/README.md +10 -5
- package/spec/v2/ext/kanban/README.md +18 -7
- package/spec/v2/ext/knowledge/README.md +18 -7
- package/spec/v2/ext/launchStudio/README.md +18 -7
- package/spec/v2/ext/messaging/README.md +18 -7
- package/spec/v2/ext/portability/README.md +11 -2
- package/spec/v2/ext/provider-idempotency/README.md +10 -2
- package/spec/v2/ext/restTransport/README.md +18 -7
- package/spec/v2/ext/sandbox-runtime-notes/README.md +9 -2
- package/spec/v2/ext/webResearch/README.md +18 -7
- package/spec/v2/id-field-bindings.json +4 -4
- package/spec/v2/release.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./deprecations.schema.json",
|
|
3
3
|
"version": 1,
|
|
4
|
-
"updated": "2026-09-
|
|
4
|
+
"updated": "2026-09-18",
|
|
5
5
|
"entries": [
|
|
6
6
|
{
|
|
7
7
|
"id": "openwop.deprecation.capabilities-wrapper",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"surface": "top-level `capabilities` wrapper object in /.well-known/openwop",
|
|
10
10
|
"kind": "discovery-shape",
|
|
11
11
|
"deprecatedIn": "RFC 0073 (v1.1)",
|
|
12
|
-
"authority": "RFC 0073
|
|
12
|
+
"authority": "RFC 0073 §Proposal; spec/v1/capabilities.md §Discovery document root (\"deprecated legacy shape, tolerated only by the schema's additionalProperties: true\")",
|
|
13
13
|
"removeIn": "2.0",
|
|
14
14
|
"replacement": "capability families at the document root",
|
|
15
15
|
"codemod": null,
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"v2.0-cut",
|
|
28
28
|
"v1-end-of-support"
|
|
29
29
|
],
|
|
30
|
-
"note": " RFC 0176
|
|
30
|
+
"note": " RFC 0176 §C.2: absent from the v2 representation at the cut; removed from the v1 representation at v1 end-of-support."
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"id": "openwop.deprecation.host-dotted-mirror",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"surface": "host-side `host.<family>` dotted mirror of root capability families",
|
|
36
36
|
"kind": "discovery-shape",
|
|
37
37
|
"deprecatedIn": "RFC 0073 (v1.1)",
|
|
38
|
-
"authority": "RFC 0073
|
|
38
|
+
"authority": "RFC 0073 §3 \"Reference host — canonical root + deprecated mirror\"; retirement gated on the v2 major (RFC 0073 UQ1/UQ2)",
|
|
39
39
|
"removeIn": "2.0",
|
|
40
|
-
"replacement": "one declaration file: document-root key
|
|
40
|
+
"replacement": "one declaration file: document-root key ≡ pack peer-dependency identifier ≡ spec section anchor (v2 program C.2)",
|
|
41
41
|
"codemod": null,
|
|
42
42
|
"sources": [
|
|
43
43
|
{
|
|
@@ -49,15 +49,15 @@
|
|
|
49
49
|
"v2.0-cut",
|
|
50
50
|
"v1-end-of-support"
|
|
51
51
|
],
|
|
52
|
-
"note": " RFC 0176
|
|
52
|
+
"note": " RFC 0176 §C.2: absent from the v2 representation at the cut; removed from the v1 representation at v1 end-of-support."
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"id": "openwop.deprecation.profile-openwop-core-alias",
|
|
56
56
|
"status": "deprecated",
|
|
57
57
|
"surface": "profile id `openwop-core` (alias of `openwop-discovery-core`)",
|
|
58
58
|
"kind": "profile-id",
|
|
59
|
-
"deprecatedIn": "RFC 0155
|
|
60
|
-
"authority": "spec/v1/profiles.md
|
|
59
|
+
"deprecatedIn": "RFC 0155 §A (v1.2, 2026-08-16)",
|
|
60
|
+
"authority": "spec/v1/profiles.md §`openwop-discovery-core` (canonical) — alias `openwop-core` (deprecated); RFC 0155 §A: removal \"no earlier than v2\"",
|
|
61
61
|
"removeIn": "2.0",
|
|
62
62
|
"replacement": "openwop-discovery-core",
|
|
63
63
|
"codemod": null,
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
"status": "deprecated",
|
|
75
75
|
"surface": "state-key prefix conventions as a back-compat layer over typed channels",
|
|
76
76
|
"kind": "prose-convention",
|
|
77
|
-
"deprecatedIn": "spec/v1/channels-and-reducers.md (v1.0; no RFC cited
|
|
78
|
-
"authority": "spec/v1/channels-and-reducers.md
|
|
77
|
+
"deprecatedIn": "spec/v1/channels-and-reducers.md (v1.0; no RFC cited — the spec text says the conventions are \"a back-compat layer that the spec deprecates over time\")",
|
|
78
|
+
"authority": "spec/v1/channels-and-reducers.md §Why this exists",
|
|
79
79
|
"removeIn": "2.0",
|
|
80
80
|
"replacement": "typed channels with explicit reducers",
|
|
81
81
|
"codemod": null,
|
|
@@ -93,8 +93,8 @@
|
|
|
93
93
|
"status": "deprecated",
|
|
94
94
|
"surface": "capabilities.a2a `supported: true` without `protocolVersions[]`",
|
|
95
95
|
"kind": "discovery-field",
|
|
96
|
-
"deprecatedIn": "RFC 0152
|
|
97
|
-
"authority": "spec/v1/a2a-integration.md
|
|
96
|
+
"deprecatedIn": "RFC 0152 §A",
|
|
97
|
+
"authority": "spec/v1/a2a-integration.md §Discovery: \"`supported: true` without `protocolVersions` is deprecated\"",
|
|
98
98
|
"removeIn": "2.0",
|
|
99
99
|
"replacement": "non-empty `protocolVersions[]` + `preferredVersion` (v2: a capability facet under the closed root, v2 program C.2)",
|
|
100
100
|
"codemod": null,
|
|
@@ -111,8 +111,8 @@
|
|
|
111
111
|
"status": "deprecated",
|
|
112
112
|
"surface": "capabilities.mcp `supported: true` without `protocolVersions[]`",
|
|
113
113
|
"kind": "discovery-field",
|
|
114
|
-
"deprecatedIn": "RFC 0153
|
|
115
|
-
"authority": "spec/v1/mcp-integration.md
|
|
114
|
+
"deprecatedIn": "RFC 0153 §A",
|
|
115
|
+
"authority": "spec/v1/mcp-integration.md §Discovery: \"Unqualified `supported: true` is deprecated and cannot substantiate a current-MCP claim\"",
|
|
116
116
|
"removeIn": "2.0",
|
|
117
117
|
"replacement": "non-empty `protocolVersions[]` (MCP date form) + `preferredVersion`",
|
|
118
118
|
"codemod": null,
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"surface": "workflow node `config.outputArtifactType` bag entry",
|
|
131
131
|
"kind": "schema-field",
|
|
132
132
|
"deprecatedIn": "schemas/workflow-definition.schema.json (first-class `artifactType` field)",
|
|
133
|
-
"authority": "schemas/workflow-definition.schema.json
|
|
133
|
+
"authority": "schemas/workflow-definition.schema.json — `artifactType` description: \"replaces the deprecated config.outputArtifactType bag entry\"",
|
|
134
134
|
"removeIn": "2.0",
|
|
135
135
|
"replacement": "node.artifactType",
|
|
136
136
|
"codemod": null,
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"surface": "workflow node `config.chatCard` bag entry",
|
|
149
149
|
"kind": "schema-field",
|
|
150
150
|
"deprecatedIn": "schemas/workflow-definition.schema.json (first-class `chatCard` field)",
|
|
151
|
-
"authority": "schemas/workflow-definition.schema.json
|
|
151
|
+
"authority": "schemas/workflow-definition.schema.json — `chatCard` description: \"replaces the deprecated config.chatCard bag entry\"",
|
|
152
152
|
"removeIn": "2.0",
|
|
153
153
|
"replacement": "node.chatCard",
|
|
154
154
|
"codemod": null,
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
"surface": "capabilities.auth.subjectLinking",
|
|
167
167
|
"kind": "discovery-field",
|
|
168
168
|
"deprecatedIn": "RFC 0164 (suite 1.151.0, 2026-09-02)",
|
|
169
|
-
"authority": "RFC 0164
|
|
169
|
+
"authority": "RFC 0164 §A.3: the flag is DERIVED (MUST be true whenever both `openwop-auth-saml` and `openwop-auth-scim` are advertised) and deprecated toward v2; the profile pair carries the obligation",
|
|
170
170
|
"removeIn": "2.0",
|
|
171
171
|
"replacement": "the profile pair itself; v2 Subject record with `keyClass` (v2 program C.3)",
|
|
172
172
|
"codemod": null,
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"surface": "certification bundle format v1 (schemas/conformance-certification-bundle.schema.json, `bundleVersion: \"1\"`)",
|
|
189
189
|
"kind": "artifact",
|
|
190
190
|
"deprecatedIn": "RFC 0148 (suite 1.114.0, 2026-08-12); `--certify` default flipped to v2 at suite 1.152.0",
|
|
191
|
-
"authority": "COMPATIBILITY.md
|
|
191
|
+
"authority": "COMPATIBILITY.md §2 \"Measurement vs. claim\": v1 remains parseable but ceases to substantiate a new certification after the 90-day window that began 2026-08-12 (ends 2026-11-10)",
|
|
192
192
|
"removeIn": "2.0",
|
|
193
193
|
"replacement": "certification bundle v2 (schemas/certification-bundle-v2.schema.json); bundle v3 at v2.0 (v2 program C.1)",
|
|
194
194
|
"codemod": null,
|
|
@@ -209,8 +209,8 @@
|
|
|
209
209
|
"status": "deprecated",
|
|
210
210
|
"surface": "`Capabilities-Etag` response header on GET /.well-known/openwop",
|
|
211
211
|
"kind": "header",
|
|
212
|
-
"deprecatedIn": "RFC 0165
|
|
213
|
-
"authority": "RFC 0165
|
|
212
|
+
"deprecatedIn": "RFC 0165 §C.2 (suite 1.155.0, 2026-09-02)",
|
|
213
|
+
"authority": "RFC 0165 §C.2: hosts SHOULD send a standard ETag on /.well-known/openwop and honor If-None-Match; Capabilities-Etag keeps its semantics through v1.x and is removed at 2.0",
|
|
214
214
|
"removeIn": "2.0",
|
|
215
215
|
"replacement": "standard `ETag` / `If-None-Match` on the discovery document (dual-emitted through v1.x)",
|
|
216
216
|
"codemod": null,
|
|
@@ -221,14 +221,14 @@
|
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
223
|
"file": "RFCS/0165-v2-preparation-wire-shapes.md",
|
|
224
|
-
"token": "
|
|
224
|
+
"token": "§C.2 Discovery cache validator"
|
|
225
225
|
}
|
|
226
226
|
],
|
|
227
227
|
"removalTrigger": [
|
|
228
228
|
"v2.0-cut",
|
|
229
229
|
"v1-end-of-support"
|
|
230
230
|
],
|
|
231
|
-
"note": " RFC 0176
|
|
231
|
+
"note": " RFC 0176 §C.2: absent from the v2 representation at the cut; removed from the v1 representation at v1 end-of-support."
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
234
|
"id": "openwop.deprecation.contract-provenance",
|
|
@@ -254,8 +254,8 @@
|
|
|
254
254
|
"status": "deprecated",
|
|
255
255
|
"surface": "the `X-openwop-*` webhook delivery header family (Webhook-Id, Event-Type, Timestamp, Signature, Signature-Algorithm)",
|
|
256
256
|
"kind": "header",
|
|
257
|
-
"deprecatedIn": "RFC 0165
|
|
258
|
-
"authority": "RFC 0165
|
|
257
|
+
"deprecatedIn": "RFC 0165 §C.1 (suite 1.155.0, 2026-09-02)",
|
|
258
|
+
"authority": "RFC 0165 §C.1: hosts SHOULD dual-emit the `OpenWOP-*` family with identical values; subscribers SHOULD accept either; the `X-openwop-*` family MUST still be sent through v1.x and is removed at 2.0",
|
|
259
259
|
"removeIn": "2.0",
|
|
260
260
|
"replacement": "`OpenWOP-Webhook-Id`, `OpenWOP-Event-Type`, `OpenWOP-Timestamp`, `OpenWOP-Signature: sha256={hex}`, `OpenWOP-Signature-Algorithm`",
|
|
261
261
|
"codemod": null,
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
},
|
|
268
268
|
{
|
|
269
269
|
"file": "RFCS/0165-v2-preparation-wire-shapes.md",
|
|
270
|
-
"token": "
|
|
270
|
+
"token": "§C.1 Webhook headers"
|
|
271
271
|
}
|
|
272
272
|
],
|
|
273
273
|
"removalTrigger": "v2.0-cut"
|
|
@@ -298,14 +298,14 @@
|
|
|
298
298
|
{
|
|
299
299
|
"id": "openwop.deprecation.engine-version-type-split",
|
|
300
300
|
"status": "proposed",
|
|
301
|
-
"surface": "`engineVersion` typed integer at the discovery root, number on run-snapshot (corrected 2026-09-04
|
|
301
|
+
"surface": "`engineVersion` typed integer at the discovery root, number on run-snapshot (corrected 2026-09-04 — the prose MUST requires a number), and string on run-event / three event payloads",
|
|
302
302
|
"kind": "schema-field",
|
|
303
303
|
"deprecatedIn": null,
|
|
304
|
-
"authority": "RFC 0165
|
|
304
|
+
"authority": "RFC 0165 §A.4 (recorded; unification is a v2 C.5 item — changing either type is a COMPATIBILITY §2.2 break in v1.x)",
|
|
305
305
|
"removeIn": "2.0",
|
|
306
306
|
"replacement": "one integer `engineVersion` on every carrier (v2)",
|
|
307
307
|
"codemod": null,
|
|
308
|
-
"note": "In v1.x the per-event value is the decimal string rendering of the root integer (version-negotiation.md
|
|
308
|
+
"note": "In v1.x the per-event value is the decimal string rendering of the root integer (version-negotiation.md §\"Protocol version grammar\").",
|
|
309
309
|
"sources": [
|
|
310
310
|
{
|
|
311
311
|
"file": "spec/v1/version-negotiation.md",
|
|
@@ -324,7 +324,7 @@
|
|
|
324
324
|
"surface": "`since` query parameter on GET /v1/runs/{runId}/events/poll",
|
|
325
325
|
"kind": "discovery-field",
|
|
326
326
|
"deprecatedIn": null,
|
|
327
|
-
"authority": "v2 charter C.4 (RFC 0167
|
|
327
|
+
"authority": "v2 charter C.4 (RFC 0167 §E; version-negotiation.md names `lastSequence` authoritative and `since` back-compat for pre-v1.0 deployments)",
|
|
328
328
|
"removeIn": "2.0",
|
|
329
329
|
"replacement": "`lastSequence` in v1.x; the v2 C.4 child defines the cursor (RFC 0165 G7)",
|
|
330
330
|
"codemod": null,
|
|
@@ -343,7 +343,7 @@
|
|
|
343
343
|
"surface": "`X-Dedup`, `X-Force-Engine-Version`, `X-Pack-Sha`, `X-Pack-Signing-Method` request headers",
|
|
344
344
|
"kind": "header",
|
|
345
345
|
"deprecatedIn": null,
|
|
346
|
-
"authority": "v2 charter C.4 (RFC 0167
|
|
346
|
+
"authority": "v2 charter C.4 (RFC 0167 §E): `OpenWOP-*` for every non-standard header; RFC 0165 §C.1 covered only the webhook family",
|
|
347
347
|
"removeIn": "2.0",
|
|
348
348
|
"replacement": "`OpenWOP-Dedup`, `OpenWOP-Force-Engine-Version` (seam-only, moves to the seams profile), `OpenWOP-Pack-Sha`, `OpenWOP-Pack-Signing-Method`",
|
|
349
349
|
"codemod": null,
|
|
@@ -410,7 +410,7 @@
|
|
|
410
410
|
"surface": "node config `credentialProvider` key",
|
|
411
411
|
"kind": "schema-field",
|
|
412
412
|
"deprecatedIn": "node-packs.md (`provider` is canonical; `credentialProvider` is named as the legacy alias)",
|
|
413
|
-
"authority": "spec/v1/node-packs.md
|
|
413
|
+
"authority": "spec/v1/node-packs.md §Credential resolution (\"and the legacy alias `credentialProvider`\")",
|
|
414
414
|
"removeIn": "2.0",
|
|
415
415
|
"replacement": "`provider`",
|
|
416
416
|
"codemod": null,
|
|
@@ -446,7 +446,7 @@
|
|
|
446
446
|
"surface": "`approvalRequested` / `clarificationRequested` legacy event payload definitions and the free-text `feedback` field",
|
|
447
447
|
"kind": "schema-field",
|
|
448
448
|
"deprecatedIn": "run-event-payloads.schema.json + interrupt-profiles.md (the interrupt primitive `interrupt.requested {kind}` is canonical)",
|
|
449
|
-
"authority": "schemas/run-event-payloads.schema.json $defs approvalRequested / clarificationRequested descriptions; spec/v1/interrupt-profiles.md
|
|
449
|
+
"authority": "schemas/run-event-payloads.schema.json $defs approvalRequested / clarificationRequested descriptions; spec/v1/interrupt-profiles.md §Approval",
|
|
450
450
|
"removeIn": "2.0",
|
|
451
451
|
"replacement": "`interrupt.requested` with `kind: approval | clarification`; `refineFeedback`",
|
|
452
452
|
"codemod": null,
|
|
@@ -467,8 +467,8 @@
|
|
|
467
467
|
"status": "deprecated",
|
|
468
468
|
"surface": "`a2a-0.3-legacy` A2A profile id",
|
|
469
469
|
"kind": "profile-id",
|
|
470
|
-
"deprecatedIn": "RFC 0152
|
|
471
|
-
"authority": "spec/v1/a2a-integration.md
|
|
470
|
+
"deprecatedIn": "RFC 0152 §A (A2A 1.0.0 published 2026-03-12; legacy window ends 2027-03-12)",
|
|
471
|
+
"authority": "spec/v1/a2a-integration.md §Discovery (\"a host SHOULD NOT advertise `a2a-0.3-legacy`\" after 2027-03-12); RFC 0152 register G1/R1",
|
|
472
472
|
"removeIn": "2.0",
|
|
473
473
|
"replacement": "`a2a-1.0` only; the v2 C.8 child removes the legacy path",
|
|
474
474
|
"codemod": null,
|
|
@@ -489,8 +489,8 @@
|
|
|
489
489
|
"status": "deprecated",
|
|
490
490
|
"surface": "`mcp-2025-06-18-legacy` MCP profile id",
|
|
491
491
|
"kind": "profile-id",
|
|
492
|
-
"deprecatedIn": "RFC 0153
|
|
493
|
-
"authority": "spec/v1/mcp-integration.md
|
|
492
|
+
"deprecatedIn": "RFC 0153 §A (current profile accepted 2026-08-12; legacy window ends 2027-08-12)",
|
|
493
|
+
"authority": "spec/v1/mcp-integration.md §Discovery; RFC 0153 register G1/R1",
|
|
494
494
|
"removeIn": "2.0",
|
|
495
495
|
"replacement": "`mcp-2026-07-28` only; the v2 C.8 child removes the legacy path",
|
|
496
496
|
"codemod": null,
|
|
@@ -511,8 +511,8 @@
|
|
|
511
511
|
"status": "deprecated",
|
|
512
512
|
"surface": "`openwop-Webhook-Signature: v1=<hex>` header the pre-1.9.0 SDK helpers read (never in any spec file)",
|
|
513
513
|
"kind": "header",
|
|
514
|
-
"deprecatedIn": "RFC 0165
|
|
515
|
-
"authority": "RFC 0165
|
|
514
|
+
"deprecatedIn": "RFC 0165 §C.3 (SDK-versus-spec defect; fixed in openwop-sdks TS 1.9.0 / Py 1.7.0 / Go v1.6.0)",
|
|
515
|
+
"authority": "RFC 0165 §C.3",
|
|
516
516
|
"removeIn": "2.0",
|
|
517
517
|
"replacement": "`X-openwop-Signature: sha256={hex}` in v1.x; `OpenWOP-Signature` in v2",
|
|
518
518
|
"codemod": null,
|
|
@@ -527,10 +527,10 @@
|
|
|
527
527
|
{
|
|
528
528
|
"id": "openwop.deprecation.undeclared-host-extension-families",
|
|
529
529
|
"status": "proposed",
|
|
530
|
-
"surface": "the 11
|
|
530
|
+
"surface": "the 11 `§host.*` families RFC 0144 classed `extension` (brand, canvas, chat, coordination, dataIntegration, entities, kanban, knowledge, launchStudio, messaging, webResearch) — declared in neither the dotted nor the root spelling",
|
|
531
531
|
"kind": "discovery-shape",
|
|
532
532
|
"deprecatedIn": null,
|
|
533
|
-
"authority": "v2 charter C.2 (RFC 0167
|
|
533
|
+
"authority": "v2 charter C.2 (RFC 0167 §E): one declaration file; extensions live under one namespaced key; RFC 0144 §A classified them deliberately as extension namespaces",
|
|
534
534
|
"removeIn": "2.0",
|
|
535
535
|
"replacement": "the v2 extension namespace key (C.2 child); the prose sections move to spec/v2/ext/",
|
|
536
536
|
"codemod": null,
|
|
@@ -549,9 +549,9 @@
|
|
|
549
549
|
"surface": "the `/v1/` path-key prefix on every versioned operation",
|
|
550
550
|
"kind": "path",
|
|
551
551
|
"deprecatedIn": null,
|
|
552
|
-
"authority": "RFC 0172
|
|
552
|
+
"authority": "RFC 0172 §A.2 (v2 operations are unversioned path keys on a bare origin; v1 keys retained through the overlap and removed with the v1 tree at Phase 5)",
|
|
553
553
|
"removeIn": "2.0",
|
|
554
|
-
"replacement": "unversioned path keys + `OpenWOP-Version` negotiation (RFC 0172
|
|
554
|
+
"replacement": "unversioned path keys + `OpenWOP-Version` negotiation (RFC 0172 §A)",
|
|
555
555
|
"codemod": null,
|
|
556
556
|
"note": "Proposed: the prefix is the v1 wire surface itself and cannot be deprecated inside v1.x; the row exists so the removal has a date and the alias coverage gate sees the surface.",
|
|
557
557
|
"sources": [
|
|
@@ -568,11 +568,11 @@
|
|
|
568
568
|
"surface": "the per-RFC `G<n>` local gap id as the register's ID column",
|
|
569
569
|
"kind": "prose-convention",
|
|
570
570
|
"deprecatedIn": "RFC 0178 (v2.0)",
|
|
571
|
-
"authority": "RFC 0178
|
|
571
|
+
"authority": "RFC 0178 §B.2 (the `openwop.gap.<rfc>.<n>` id is canonical; `G<n>` is an alias until 2.1)",
|
|
572
572
|
"removeIn": "2.1",
|
|
573
573
|
"replacement": "`openwop.gap.<rfc>.<n>` in the ID column",
|
|
574
574
|
"codemod": null,
|
|
575
|
-
"note": "Proposed: the alias survives through 2.0 so v1 register citations keep resolving; removed at 2.1. Status flipped proposed
|
|
575
|
+
"note": "Proposed: the alias survives through 2.0 so v1 register citations keep resolving; removed at 2.1. Status flipped proposed→deprecated 2026-09-17: the surface has no occurrence in spec/v2, schemas/v2 or api/v2 (token grep, W7).",
|
|
576
576
|
"sources": [
|
|
577
577
|
{
|
|
578
578
|
"file": "spec/v1/gaps.schema.json",
|
|
@@ -586,7 +586,7 @@
|
|
|
586
586
|
"surface": "registry version manifest `deprecated` boolean (an advisory version flag that collides with the JSON Schema `deprecated` annotation keyword)",
|
|
587
587
|
"kind": "schema-field",
|
|
588
588
|
"deprecatedIn": null,
|
|
589
|
-
"authority": "RFC 0178
|
|
589
|
+
"authority": "RFC 0178 §A.1 (renamed so the annotation keyword is unambiguous); the rename rides C.10's registry/v2 re-sign",
|
|
590
590
|
"removeIn": "2.0",
|
|
591
591
|
"replacement": "`versionDeprecated`",
|
|
592
592
|
"codemod": null,
|
|
@@ -605,7 +605,7 @@
|
|
|
605
605
|
"surface": "the two-segment interrupt resume token `base64url(payload).hmac` with no scheme id, algorithm, or key id",
|
|
606
606
|
"kind": "artifact",
|
|
607
607
|
"deprecatedIn": null,
|
|
608
|
-
"authority": "RFC 0170
|
|
608
|
+
"authority": "RFC 0170 §E.1 (`ow2.<alg>.<kid>.<payload>.<mac>`); interrupt.md §Resume tokens' rotation rule references an algorithm-version discriminator the format does not contain",
|
|
609
609
|
"removeIn": "2.0",
|
|
610
610
|
"replacement": "`ow2.<alg>.<kid>.<payload>.<mac>`; issued v1 tokens resolvable under `kid: legacy` until their expiry",
|
|
611
611
|
"codemod": null,
|
|
@@ -624,7 +624,7 @@
|
|
|
624
624
|
"surface": "`details.retryAfter`, `details.retryAfterMs`, `details.retryAfterSeconds` on error envelopes (three body spellings beside the `Retry-After` header)",
|
|
625
625
|
"kind": "schema-field",
|
|
626
626
|
"deprecatedIn": null,
|
|
627
|
-
"authority": "RFC 0171
|
|
627
|
+
"authority": "RFC 0171 §B.2 (retry timing lives in `Retry-After` only)",
|
|
628
628
|
"removeIn": "2.0",
|
|
629
629
|
"replacement": "the `Retry-After` header",
|
|
630
630
|
"codemod": null,
|
|
@@ -647,7 +647,7 @@
|
|
|
647
647
|
"surface": "dotted reserved keys in `RunOptions.configurable` (`ai.provider`, `ai.model`, `ai.credentialRef`, `distillation.tokenBudget`) and the open map they live in",
|
|
648
648
|
"kind": "schema-field",
|
|
649
649
|
"deprecatedIn": null,
|
|
650
|
-
"authority": "RFC 0171
|
|
650
|
+
"authority": "RFC 0171 §D.1 (closed, nested, versioned `configurable`)",
|
|
651
651
|
"removeIn": "2.0",
|
|
652
652
|
"replacement": "`configurable.ai.*`, `configurable.distillation.*`; vendor keys under `configurable.extensions.<org>`",
|
|
653
653
|
"codemod": "openwop.codemod.configurable-v2",
|
|
@@ -666,7 +666,7 @@
|
|
|
666
666
|
"surface": "discovery flags that gate a security-load-bearing MUST: the fourteen `auth.*` gates, `replay.sideEffectSuppression`, `webhooks.durable`, `interrupt.approverRouting` (as a gate), `sandbox.supported` (as a gate)",
|
|
667
667
|
"kind": "discovery-field",
|
|
668
668
|
"deprecatedIn": null,
|
|
669
|
-
"authority": "RFC 0173
|
|
669
|
+
"authority": "RFC 0173 §A.1 (an obligation of the surface, never a discovery flag; RFC 0164 §22's ruling applied corpus-wide)",
|
|
670
670
|
"removeIn": "2.0",
|
|
671
671
|
"replacement": "the obligation binds when the surface is advertised; `auth.lanes[]`, `replay`, `webhooks`, `interrupt.refKinds[]`, `sandbox.isolationModel` stay as facets; relaxations are operator settings recorded in bundle v3 `host.relaxations[]`",
|
|
672
672
|
"codemod": null,
|
|
@@ -693,11 +693,11 @@
|
|
|
693
693
|
"surface": "`supportedTransports[]` at the discovery root (`rest | mcp | a2a | grpc`)",
|
|
694
694
|
"kind": "discovery-field",
|
|
695
695
|
"deprecatedIn": "RFC 0175 (v2.0)",
|
|
696
|
-
"authority": "RFC 0175
|
|
696
|
+
"authority": "RFC 0175 §B.1 (REST is the wire; A2A and MCP are compositions with first-class facets; gRPC is demoted)",
|
|
697
697
|
"removeIn": "2.0",
|
|
698
698
|
"replacement": "none; `a2a.*` and `mcp.*` facets",
|
|
699
699
|
"codemod": "openwop.codemod.discovery-document-v2",
|
|
700
|
-
"note": "Proposed: nothing in the corpus reads the `mcp` or `a2a` members (profiles.md reads only `rest`). Status flipped proposed
|
|
700
|
+
"note": "Proposed: nothing in the corpus reads the `mcp` or `a2a` members (profiles.md reads only `rest`). Status flipped proposed→deprecated 2026-09-17: the surface has no occurrence in spec/v2, schemas/v2 or api/v2 (token grep, W7).",
|
|
701
701
|
"sources": [
|
|
702
702
|
{
|
|
703
703
|
"file": "spec/v1/capabilities.md",
|
|
@@ -712,7 +712,7 @@
|
|
|
712
712
|
"surface": "`capabilities.grpc` block and `grpc-transport.md` as a core Stable document with RFC 2119 MUSTs",
|
|
713
713
|
"kind": "discovery-field",
|
|
714
714
|
"deprecatedIn": null,
|
|
715
|
-
"authority": "RFC 0175
|
|
715
|
+
"authority": "RFC 0175 §A.1 (demoted to `spec/v2/ext/grpc-transport/`, `unwitnessable`, `adoption: none`; the door back into core is named)",
|
|
716
716
|
"removeIn": "2.0",
|
|
717
717
|
"replacement": "`spec/v2/ext/grpc-transport/` (documented, not advertised)",
|
|
718
718
|
"codemod": "openwop.codemod.discovery-document-v2",
|
|
@@ -728,16 +728,16 @@
|
|
|
728
728
|
{
|
|
729
729
|
"id": "openwop.deprecation.well-known-wop-alias",
|
|
730
730
|
"status": "proposed",
|
|
731
|
-
"surface": "`/.well-known/wop` served byte-identically with `/.well-known/openwop` (MyndHyve, the wop
|
|
731
|
+
"surface": "`/.well-known/wop` served byte-identically with `/.well-known/openwop` (MyndHyve, the wop → openwop rebrand alias; the C.5 precedent)",
|
|
732
732
|
"kind": "path",
|
|
733
733
|
"deprecatedIn": null,
|
|
734
|
-
"authority": "RFC 0176
|
|
734
|
+
"authority": "RFC 0176 §C.3",
|
|
735
735
|
"removeIn": "2.0",
|
|
736
736
|
"removalTrigger": [
|
|
737
737
|
"v2.0-cut",
|
|
738
738
|
"v1-end-of-support"
|
|
739
739
|
],
|
|
740
|
-
"replacement": "`/.well-known/openwop` (one resource; RFC 0176
|
|
740
|
+
"replacement": "`/.well-known/openwop` (one resource; RFC 0176 §C.1)",
|
|
741
741
|
"codemod": null,
|
|
742
742
|
"note": "Proposed: the alias exists in one host and was never registered; it is the model RFC 0172 cites for overlap publication.",
|
|
743
743
|
"sources": [
|
|
@@ -753,11 +753,11 @@
|
|
|
753
753
|
"surface": "`engines.openwop` ranges with no upper bound read as open (146 of 282 published versions)",
|
|
754
754
|
"kind": "schema-field",
|
|
755
755
|
"deprecatedIn": null,
|
|
756
|
-
"authority": "RFC 0177
|
|
756
|
+
"authority": "RFC 0177 §A.1 (absent ceiling ⇒ `<2.0.0`; `pack_engine_unsupported` at install on every publication path)",
|
|
757
757
|
"removeIn": "2.0",
|
|
758
758
|
"replacement": "an explicit `>=x.y.z <M.0.0` range; the v2 schema enforces the grammar",
|
|
759
759
|
"codemod": null,
|
|
760
|
-
"note": "Proposed: no codemod
|
|
760
|
+
"note": "Proposed: no codemod — the author declares compatibility; `openwop.codemod.pack-manifest-v2` refuses a manifest with no v2-satisfiable range.",
|
|
761
761
|
"sources": [
|
|
762
762
|
{
|
|
763
763
|
"file": "spec/v1/node-packs.md",
|
|
@@ -772,7 +772,7 @@
|
|
|
772
772
|
"surface": "peer-dependency identifiers that are not declaration-file keys: `host.*` dotted twins (`host.fs`/`fs`, `host.queueBus`/`queueBus`), `openwop.agents.memoryBackends`, facet paths (`aiProviders.imageGeneration`, `host.aiEnvelope.await`), the reserved-slot prose list",
|
|
773
773
|
"kind": "schema-field",
|
|
774
774
|
"deprecatedIn": null,
|
|
775
|
-
"authority": "RFC 0177
|
|
775
|
+
"authority": "RFC 0177 §B.1–§B.2 (identifier ≡ declaration-file key; `pack_peer_dependency_undefined` reads against the file; generated alias table)",
|
|
776
776
|
"removeIn": "2.0",
|
|
777
777
|
"removalTrigger": "v1-end-of-support",
|
|
778
778
|
"replacement": "`spec/v2/peer-dependency-aliases.json` through the overlap; `peerDependenciesMeta.<family>.facets[]` for facets",
|
|
@@ -788,14 +788,14 @@
|
|
|
788
788
|
{
|
|
789
789
|
"id": "openwop.deprecation.manifest-signing-method",
|
|
790
790
|
"status": "deprecated",
|
|
791
|
-
"surface": "`signing.method: manual | ed25519 | sigstore`
|
|
791
|
+
"surface": "`signing.method: manual | ed25519 | sigstore` — two values the schema calls synonymous that the verifier treats as signatures over different bytes",
|
|
792
792
|
"kind": "schema-field",
|
|
793
793
|
"deprecatedIn": "RFC 0177 (v2.0)",
|
|
794
|
-
"authority": "RFC 0177
|
|
794
|
+
"authority": "RFC 0177 §C.3 (one `signing.scheme: ed25519-canonical-json`)",
|
|
795
795
|
"removeIn": "2.0",
|
|
796
796
|
"replacement": "`signing.scheme`",
|
|
797
797
|
"codemod": "openwop.codemod.pack-manifest-v2",
|
|
798
|
-
"note": "Proposed: the codemod refuses `ed25519` and `sigstore`
|
|
798
|
+
"note": "Proposed: the codemod refuses `ed25519` and `sigstore` — those packs are re-signed in `registry/v2/`, never relabeled. Status flipped proposed→deprecated 2026-09-17: the surface has no occurrence in spec/v2, schemas/v2 or api/v2 (token grep, W7).",
|
|
799
799
|
"sources": [
|
|
800
800
|
{
|
|
801
801
|
"file": "schemas/registry-version-manifest.schema.json",
|
|
@@ -810,7 +810,7 @@
|
|
|
810
810
|
"surface": "`connection-packs.md` clause 6: an installed pack takes precedence over a built-in of the same `provider.id` when its version is greater-than-or-equal",
|
|
811
811
|
"kind": "prose-convention",
|
|
812
812
|
"deprecatedIn": null,
|
|
813
|
-
"authority": "RFC 0177
|
|
813
|
+
"authority": "RFC 0177 §D.1 (RFC 0095 UQ4 decided: fail-closed `connection_provider_conflict`; qualified `<packName>#<id>` form)",
|
|
814
814
|
"removeIn": "2.0",
|
|
815
815
|
"replacement": "fail-closed conflict; the qualified form",
|
|
816
816
|
"codemod": null,
|
|
@@ -829,11 +829,11 @@
|
|
|
829
829
|
"surface": "the nine `/v1/host/sample/*`, `/v1/host/workspace/files*` and `/v1/packs-test/*` seam/test operations in `api/openapi.yaml` and `spec/v1/operation-path-manifest.json`, and the `testSeams` discovery-flag proposals",
|
|
830
830
|
"kind": "path",
|
|
831
831
|
"deprecatedIn": "RFC 0168 (v2.0)",
|
|
832
|
-
"authority": "RFC 0168
|
|
832
|
+
"authority": "RFC 0168 §C (seams are the profile `openwop-conformance-seams-v2` with `api/seams-v2.yaml`; forbidden from the capability namespace)",
|
|
833
833
|
"removeIn": "2.0",
|
|
834
834
|
"replacement": "`api/seams-v2.yaml`; `profiles[]` membership",
|
|
835
835
|
"codemod": null,
|
|
836
|
-
"note": "Proposed: a generated document, not a persisted artifact. Status flipped proposed
|
|
836
|
+
"note": "Proposed: a generated document, not a persisted artifact. Status flipped proposed→deprecated 2026-09-17: the surface has no occurrence in spec/v2, schemas/v2 or api/v2 (token grep, W7).",
|
|
837
837
|
"sources": [
|
|
838
838
|
{
|
|
839
839
|
"file": "spec/v1/operation-path-manifest.json",
|
|
@@ -848,7 +848,7 @@
|
|
|
848
848
|
"surface": "the 29 corpus-coherence scenarios reported `blocked` in every host bundle",
|
|
849
849
|
"kind": "artifact",
|
|
850
850
|
"deprecatedIn": null,
|
|
851
|
-
"authority": "RFC 0168
|
|
851
|
+
"authority": "RFC 0168 §D.1 (spec-repo CI; never in a bundle)",
|
|
852
852
|
"removeIn": "2.0",
|
|
853
853
|
"replacement": "`scripts/check-spec-coherence.mjs`",
|
|
854
854
|
"codemod": null,
|
|
@@ -867,11 +867,11 @@
|
|
|
867
867
|
"surface": "the published suite tarball's vendored `api/` and `schemas/` copies (and `src`, suite self-tests)",
|
|
868
868
|
"kind": "artifact",
|
|
869
869
|
"deprecatedIn": null,
|
|
870
|
-
"authority": "RFC 0168
|
|
870
|
+
"authority": "RFC 0168 §D.2 (`dist`, `fixtures`, `vectors` only; corpus as the digest-checked peer dependency `@openwop/spec-artifacts`)",
|
|
871
871
|
"removeIn": "2.0",
|
|
872
872
|
"replacement": "`@openwop/spec-artifacts`",
|
|
873
873
|
"codemod": null,
|
|
874
|
-
"note": "Proposed: the 1.138.1 mechanism
|
|
874
|
+
"note": "Proposed: the 1.138.1 mechanism — one source, no copy.",
|
|
875
875
|
"sources": [
|
|
876
876
|
{
|
|
877
877
|
"file": "conformance/README.md",
|
|
@@ -886,7 +886,7 @@
|
|
|
886
886
|
"surface": "certification bundle v2 (`bundleVersion: \"2\"`, root `additionalProperties: true`, `witnessSha256` absent, unsigned)",
|
|
887
887
|
"kind": "artifact",
|
|
888
888
|
"deprecatedIn": null,
|
|
889
|
-
"authority": "RFC 0168
|
|
889
|
+
"authority": "RFC 0168 §E (bundle v3: closed root, required witness/build/tier/count, Ed25519 attestation)",
|
|
890
890
|
"removeIn": "2.0",
|
|
891
891
|
"removalTrigger": "v1-end-of-support",
|
|
892
892
|
"replacement": "bundle v3 (`schemas/v2/certification-bundle.schema.json`)",
|
|
@@ -898,6 +898,24 @@
|
|
|
898
898
|
"token": "\"const\": \"2\""
|
|
899
899
|
}
|
|
900
900
|
]
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"id": "openwop.deprecation.bare-webhook-id",
|
|
904
|
+
"status": "deprecated",
|
|
905
|
+
"surface": "the bare (opaque-only) spelling of `webhookId` — the `POST /webhooks` response field and every `webhookId` path parameter",
|
|
906
|
+
"kind": "schema-field",
|
|
907
|
+
"deprecatedIn": "RFC 0187 (v2.4)",
|
|
908
|
+
"authority": "RFC 0187 §A.2; spec/v2/core/identity.md §5 (\"Through the overlap the bare form is admitted on a major-2 path parameter — an affordance with an expiry\")",
|
|
909
|
+
"removeIn": "2.0",
|
|
910
|
+
"removalTrigger": "v1-end-of-support",
|
|
911
|
+
"replacement": "the tenant-bound form `<tenantId>/<opaque>`, projected per RFC 0184",
|
|
912
|
+
"codemod": null,
|
|
913
|
+
"sources": [
|
|
914
|
+
{
|
|
915
|
+
"file": "RFCS/0187-host-found-bindings.md",
|
|
916
|
+
"token": "A host MUST NOT mint one after this RFC"
|
|
917
|
+
}
|
|
918
|
+
]
|
|
901
919
|
}
|
|
902
920
|
]
|
|
903
921
|
}
|