@openwop/spec-artifacts 2.42.6 → 2.42.8
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 +70 -67
- package/api/seams-v2.yaml +238 -322
- package/api/v2/asyncapi.yaml +83 -113
- package/api/v2/openapi.yaml +408 -724
- package/package.json +1 -1
- package/schemas/audit-verify-result.schema.json +2 -2
- package/schemas/v2/audit-verify-result.schema.json +2 -2
- package/schemas/v2/capabilities.schema.json +4 -7
- package/schemas/v2/error-envelope.schema.json +144 -69
- package/spec/v1/alias-detectors.json +6 -0
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/deprecations.json +22 -0
- package/spec/v1/gaps.json +188 -1
- package/spec/v1/migrations.json +18 -0
- package/spec/v2/README.md +35 -37
- package/spec/v2/core/capabilities.md +186 -119
- package/spec/v2/core/conformance.md +78 -27
- package/spec/v2/core/connection-packs.md +8 -3
- package/spec/v2/core/conversation.md +10 -4
- package/spec/v2/core/errors.md +30 -9
- package/spec/v2/core/events.md +116 -80
- package/spec/v2/core/form-content-packs.md +11 -13
- package/spec/v2/core/headers.md +23 -14
- package/spec/v2/core/host-services.md +22 -5
- package/spec/v2/core/i18n.md +64 -0
- package/spec/v2/core/idempotency.md +48 -36
- package/spec/v2/core/identity.md +110 -42
- package/spec/v2/core/interop.md +82 -21
- package/spec/v2/core/interrupt.md +79 -40
- package/spec/v2/core/node-pack-runtimes.md +18 -4
- package/spec/v2/core/oauth.md +40 -6
- package/spec/v2/core/overview.md +61 -33
- package/spec/v2/core/packs.md +53 -28
- package/spec/v2/core/persistence.md +61 -80
- package/spec/v2/core/portability.md +44 -0
- package/spec/v2/core/replay.md +56 -42
- package/spec/v2/core/runs.md +198 -60
- package/spec/v2/core/security-defaults.md +57 -33
- package/spec/v2/core/tool-catalog.md +29 -6
- package/spec/v2/core/versioning.md +115 -50
- package/spec/v2/core/webhooks.md +61 -20
- package/spec/v2/core/workflow-chain-packs.md +16 -14
- package/spec/v2/corrections.json +17 -1
- package/spec/v2/corrections.schema.json +1 -1
- package/spec/v2/declaration.json +26 -9
- package/spec/v2/declaration.schema.json +10 -0
- package/spec/v2/errors.json +121 -4
- package/spec/v2/errors.schema.json +38 -0
- package/spec/v2/ext/README.md +36 -23
- package/spec/v2/ext/a2uiSurface/README.md +75 -89
- package/spec/v2/ext/brand/README.md +15 -15
- package/spec/v2/ext/canvas/README.md +15 -15
- package/spec/v2/ext/chat/README.md +15 -15
- package/spec/v2/ext/coordination/README.md +15 -15
- package/spec/v2/ext/dataIntegration/README.md +17 -20
- package/spec/v2/ext/entities/README.md +15 -15
- package/spec/v2/ext/grpc-transport/README.md +6 -8
- package/spec/v2/ext/kanban/README.md +15 -15
- package/spec/v2/ext/knowledge/README.md +15 -15
- package/spec/v2/ext/launchStudio/README.md +16 -16
- package/spec/v2/ext/messaging/README.md +15 -15
- package/spec/v2/ext/portability/README.md +3 -17
- package/spec/v2/ext/provider-idempotency/README.md +7 -10
- package/spec/v2/ext/restTransport/README.md +30 -19
- package/spec/v2/ext/sandbox-runtime-notes/README.md +7 -9
- package/spec/v2/ext/webResearch/README.md +16 -16
- package/spec/v2/profiles.json +6 -2
- package/spec/v2/release.json +2 -2
- package/spec/v2/surface-baseline.json +544 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/spec-artifacts",
|
|
3
|
-
"version": "2.42.
|
|
3
|
+
"version": "2.42.8",
|
|
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": {
|
|
@@ -55,12 +55,12 @@
|
|
|
55
55
|
"merkleRoot": {
|
|
56
56
|
"type": "string",
|
|
57
57
|
"minLength": 1,
|
|
58
|
-
"description": "
|
|
58
|
+
"description": "Lowercase-hex Merkle root over the entries this checkpoint anchors: sequence in (P, atSequence], P the previous checkpoint's atSequence or 0. Leaves are the entries' hashes (SHA-256 of RFC 8785 JCS) in sequence order; a parent is SHA-256 of the ASCII bytes left ‖ right; a last odd node is promoted unchanged (auth-profiles.md §Audit-log integrity 3, RFC 0218). Verifiers re-compute and compare, holding the leaf count to atSequence − P; a mismatch implies chain mutation since the previous checkpoint."
|
|
59
59
|
},
|
|
60
60
|
"signature": {
|
|
61
61
|
"type": "string",
|
|
62
62
|
"minLength": 1,
|
|
63
|
-
"description": "Base64-encoded Ed25519 signature over the
|
|
63
|
+
"description": "Base64-encoded Ed25519 signature over the 32 bytes `merkleRoot` hex-decodes to (not its hex text, not the checkpoint object), verifiable with the host's advertised `auditLogIntegrity.checkpointPublicKey` (RFC 0218)."
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"additionalProperties": false
|
|
@@ -70,12 +70,12 @@
|
|
|
70
70
|
"merkleRoot": {
|
|
71
71
|
"type": "string",
|
|
72
72
|
"minLength": 1,
|
|
73
|
-
"description": "
|
|
73
|
+
"description": "Lowercase-hex Merkle root over the entries this checkpoint anchors: sequence in (P, atSequence], P the previous checkpoint's atSequence or 0. Leaves are the entries' hashes (SHA-256 of RFC 8785 JCS) in sequence order; a parent is SHA-256 of the ASCII bytes left ‖ right; a last odd node is promoted unchanged (auth-profiles.md §Audit-log integrity 3, RFC 0218). Verifiers re-compute and compare, holding the leaf count to atSequence − P; a mismatch implies chain mutation since the previous checkpoint."
|
|
74
74
|
},
|
|
75
75
|
"signature": {
|
|
76
76
|
"type": "string",
|
|
77
77
|
"minLength": 1,
|
|
78
|
-
"description": "Base64-encoded Ed25519 signature over the
|
|
78
|
+
"description": "Base64-encoded Ed25519 signature over the 32 bytes `merkleRoot` hex-decodes to (not its hex text, not the checkpoint object), verifiable with the host's advertised `auditLogIntegrity.checkpointPublicKey` (RFC 0218)."
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
81
|
"additionalProperties": false
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
},
|
|
119
119
|
"minClientVersion": {
|
|
120
120
|
"type": "string",
|
|
121
|
-
"
|
|
121
|
+
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$",
|
|
122
|
+
"description": "Optional. The lowest <major>.<minor> client this host serves (versioning.md §1.5). A host MAY refuse a client below it; a refusal MUST be 426 client_version_unsupported."
|
|
122
123
|
},
|
|
123
124
|
"runtimeCapabilities": {
|
|
124
125
|
"type": "array",
|
|
@@ -2535,10 +2536,6 @@
|
|
|
2535
2536
|
"required": [
|
|
2536
2537
|
"version"
|
|
2537
2538
|
],
|
|
2538
|
-
"if": {
|
|
2539
|
-
"properties": {}
|
|
2540
|
-
},
|
|
2541
|
-
"then": {},
|
|
2542
2539
|
"properties": {
|
|
2543
2540
|
"version": {
|
|
2544
2541
|
"type": "integer",
|
|
@@ -7913,7 +7910,7 @@
|
|
|
7913
7910
|
"export": {
|
|
7914
7911
|
"type": "boolean",
|
|
7915
7912
|
"default": false,
|
|
7916
|
-
"description": "Host can emit an export bundle for the caller's tenant
|
|
7913
|
+
"description": "Host can emit an export bundle for the caller's tenant or workspace (portability.md)."
|
|
7917
7914
|
},
|
|
7918
7915
|
"import": {
|
|
7919
7916
|
"type": "boolean",
|
|
@@ -7940,7 +7937,7 @@
|
|
|
7940
7937
|
"dryRun": {
|
|
7941
7938
|
"type": "boolean",
|
|
7942
7939
|
"default": true,
|
|
7943
|
-
"description": "Import supports a no-write plan preview
|
|
7940
|
+
"description": "Import supports a no-write plan preview. MUST be true if `import` is true."
|
|
7944
7941
|
}
|
|
7945
7942
|
},
|
|
7946
7943
|
"allOf": [
|
|
@@ -135,82 +135,157 @@
|
|
|
135
135
|
"minLength": 1
|
|
136
136
|
},
|
|
137
137
|
"details": {
|
|
138
|
-
"
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"enum": [
|
|
151
|
-
"values",
|
|
152
|
-
"updates",
|
|
153
|
-
"messages",
|
|
154
|
-
"debug"
|
|
155
|
-
]
|
|
156
|
-
},
|
|
157
|
-
"description": "Each individual mode the host serves; combinations are not listed (events.md §The events channel)."
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
"additionalProperties": true,
|
|
161
|
-
"x-openwop-error": "unsupported_stream_mode"
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
"type": "object",
|
|
165
|
-
"required": [
|
|
166
|
-
"runStatus"
|
|
167
|
-
],
|
|
168
|
-
"properties": {
|
|
169
|
-
"runStatus": {
|
|
170
|
-
"type": "string",
|
|
171
|
-
"description": "The run status that refused the transition (runs.md §Pause and resume)."
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
"additionalProperties": true,
|
|
175
|
-
"x-openwop-error": "run_state_conflict"
|
|
138
|
+
"type": "object",
|
|
139
|
+
"additionalProperties": true,
|
|
140
|
+
"description": "Error-specific contextual data. A code that registers a details schema in errors.json constrains it through the allOf below, selected by `error`; every other code accepts any object."
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"allOf": [
|
|
144
|
+
{
|
|
145
|
+
"if": {
|
|
146
|
+
"properties": {
|
|
147
|
+
"error": {
|
|
148
|
+
"const": "unsupported_stream_mode"
|
|
149
|
+
}
|
|
176
150
|
},
|
|
177
|
-
|
|
178
|
-
"
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
|
|
151
|
+
"required": [
|
|
152
|
+
"error"
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
"then": {
|
|
156
|
+
"properties": {
|
|
157
|
+
"details": {
|
|
158
|
+
"type": "object",
|
|
159
|
+
"required": [
|
|
160
|
+
"supported"
|
|
161
|
+
],
|
|
162
|
+
"properties": {
|
|
163
|
+
"supported": {
|
|
164
|
+
"type": "array",
|
|
165
|
+
"minItems": 1,
|
|
166
|
+
"items": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"enum": [
|
|
169
|
+
"values",
|
|
170
|
+
"updates",
|
|
171
|
+
"messages",
|
|
172
|
+
"debug"
|
|
173
|
+
]
|
|
174
|
+
},
|
|
175
|
+
"description": "Each individual mode the host serves; combinations are not listed (events.md §The events channel)."
|
|
176
|
+
}
|
|
188
177
|
},
|
|
189
|
-
"
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
178
|
+
"additionalProperties": true,
|
|
179
|
+
"x-openwop-error": "unsupported_stream_mode"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"if": {
|
|
186
|
+
"properties": {
|
|
187
|
+
"error": {
|
|
188
|
+
"const": "run_state_conflict"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"required": [
|
|
192
|
+
"error"
|
|
193
|
+
]
|
|
194
|
+
},
|
|
195
|
+
"then": {
|
|
196
|
+
"properties": {
|
|
197
|
+
"details": {
|
|
198
|
+
"type": "object",
|
|
199
|
+
"required": [
|
|
200
|
+
"runStatus"
|
|
201
|
+
],
|
|
202
|
+
"properties": {
|
|
203
|
+
"runStatus": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"description": "The run status that refused the transition (runs.md §Pause and resume)."
|
|
206
|
+
}
|
|
196
207
|
},
|
|
197
|
-
"
|
|
198
|
-
|
|
208
|
+
"additionalProperties": true,
|
|
209
|
+
"x-openwop-error": "run_state_conflict"
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"if": {
|
|
216
|
+
"properties": {
|
|
217
|
+
"error": {
|
|
218
|
+
"const": "client_version_unsupported"
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"required": [
|
|
222
|
+
"error"
|
|
223
|
+
]
|
|
224
|
+
},
|
|
225
|
+
"then": {
|
|
226
|
+
"properties": {
|
|
227
|
+
"details": {
|
|
228
|
+
"type": "object",
|
|
229
|
+
"properties": {
|
|
230
|
+
"minClientVersion": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$",
|
|
233
|
+
"description": "OPTIONAL. The host's advertised minClientVersion, so a client refused at discovery learns the floor (versioning.md §1.5)."
|
|
234
|
+
}
|
|
199
235
|
},
|
|
200
|
-
"
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
236
|
+
"additionalProperties": true,
|
|
237
|
+
"x-openwop-error": "client_version_unsupported"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"if": {
|
|
244
|
+
"properties": {
|
|
245
|
+
"error": {
|
|
246
|
+
"const": "payload_unprojectable"
|
|
247
|
+
}
|
|
206
248
|
},
|
|
207
|
-
|
|
208
|
-
"
|
|
209
|
-
|
|
249
|
+
"required": [
|
|
250
|
+
"error"
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
"then": {
|
|
254
|
+
"properties": {
|
|
255
|
+
"details": {
|
|
256
|
+
"type": "object",
|
|
257
|
+
"additionalProperties": false,
|
|
258
|
+
"required": [
|
|
259
|
+
"type",
|
|
260
|
+
"keys"
|
|
261
|
+
],
|
|
262
|
+
"properties": {
|
|
263
|
+
"type": {
|
|
264
|
+
"type": "string",
|
|
265
|
+
"description": "the event type whose payload could not be projected"
|
|
266
|
+
},
|
|
267
|
+
"keys": {
|
|
268
|
+
"type": "array",
|
|
269
|
+
"items": {
|
|
270
|
+
"type": "string"
|
|
271
|
+
},
|
|
272
|
+
"minItems": 1,
|
|
273
|
+
"description": "the property names the host could neither carry nor seat"
|
|
274
|
+
},
|
|
275
|
+
"eventId": {
|
|
276
|
+
"$ref": "ids.schema.json#/$defs/eventId"
|
|
277
|
+
},
|
|
278
|
+
"sequence": {
|
|
279
|
+
"type": "integer",
|
|
280
|
+
"minimum": 0
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"x-openwop-error": "payload_unprojectable"
|
|
284
|
+
}
|
|
210
285
|
}
|
|
211
|
-
|
|
286
|
+
}
|
|
212
287
|
}
|
|
213
|
-
|
|
288
|
+
],
|
|
214
289
|
"x-openwop-http-status": {
|
|
215
290
|
"connection_provider_unresolved": 400,
|
|
216
291
|
"connector_action_unresolved": 400,
|
|
@@ -308,6 +308,12 @@
|
|
|
308
308
|
"file": "spec/v2/declaration.json",
|
|
309
309
|
"token": "\"deltaTransport\"",
|
|
310
310
|
"deprecation": "openwop.deprecation.v2-a2ui-delta-transport-facet"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"alias": "optional `locale` on InterruptPayload.data and the resume payload",
|
|
314
|
+
"file": "spec/v1/i18n.md",
|
|
315
|
+
"token": "## `locale` field on `InterruptPayload`",
|
|
316
|
+
"deprecation": "openwop.deprecation.interrupt-locale-field"
|
|
311
317
|
}
|
|
312
318
|
]
|
|
313
319
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"provenance": {
|
|
5
5
|
"suite": {
|
|
6
6
|
"package": "@openwop/openwop-conformance",
|
|
7
|
-
"version": "2.42.
|
|
7
|
+
"version": "2.42.8"
|
|
8
8
|
},
|
|
9
9
|
"note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
|
|
10
10
|
},
|
|
@@ -421,5 +421,5 @@
|
|
|
421
421
|
"$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
|
|
422
422
|
}
|
|
423
423
|
],
|
|
424
|
-
"digest": "
|
|
424
|
+
"digest": "62b69d4ef9ff05f730a2e6bc253709a13a03c336eb716c9e9752b31595751ba0"
|
|
425
425
|
}
|
|
@@ -1002,6 +1002,28 @@
|
|
|
1002
1002
|
"token": "deltaTransport"
|
|
1003
1003
|
}
|
|
1004
1004
|
]
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
"id": "openwop.deprecation.interrupt-locale-field",
|
|
1008
|
+
"status": "deprecated",
|
|
1009
|
+
"surface": "optional `locale` field on `InterruptPayload.data` and on the interrupt resume payload",
|
|
1010
|
+
"kind": "schema-field",
|
|
1011
|
+
"deprecatedIn": "RFC 0171 §Migration table row `openwop.migration.C4.17` (v2 closes interrupt data and resume bodies)",
|
|
1012
|
+
"authority": "RFCS/0171-v2-wire-envelope.md §Migration table, row openwop.migration.C4.17",
|
|
1013
|
+
"removeIn": "2.0",
|
|
1014
|
+
"replacement": "none; the locale a host rendered in is request-scoped (`Content-Language`, spec/v2/core/i18n.md)",
|
|
1015
|
+
"codemod": "openwop.codemod.interrupt-locale-drop",
|
|
1016
|
+
"sources": [
|
|
1017
|
+
{
|
|
1018
|
+
"file": "RFCS/0171-v2-wire-envelope.md",
|
|
1019
|
+
"token": "openwop.migration.C4.17"
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
"file": "spec/v1/i18n.md",
|
|
1023
|
+
"token": "`locale` field on `InterruptPayload`"
|
|
1024
|
+
}
|
|
1025
|
+
],
|
|
1026
|
+
"removalTrigger": "v2.0-cut"
|
|
1005
1027
|
}
|
|
1006
1028
|
]
|
|
1007
1029
|
}
|
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-09-
|
|
4
|
+
"updated": "2026-09-28",
|
|
5
5
|
"witnessClasses": [
|
|
6
6
|
"witnessable-unaided",
|
|
7
7
|
"witnessable-gated",
|
|
@@ -12898,6 +12898,193 @@
|
|
|
12898
12898
|
}
|
|
12899
12899
|
]
|
|
12900
12900
|
},
|
|
12901
|
+
{
|
|
12902
|
+
"id": "openwop.gap.0218.1",
|
|
12903
|
+
"rfc": "0218",
|
|
12904
|
+
"local": "G1",
|
|
12905
|
+
"section": "§A",
|
|
12906
|
+
"surface": "`auth-profiles.md` §3's emitted checkpoint carries `ts`, but `audit-verify-result.schema.json`'s `Checkpoint` is closed over `{checkpoint, atSequence, merkleRoot, signature}`, so a verify result cannot echo it.",
|
|
12907
|
+
"witness": "unclassified",
|
|
12908
|
+
"requirementId": null,
|
|
12909
|
+
"disposition": "transferred",
|
|
12910
|
+
"target": "spec/v1",
|
|
12911
|
+
"sources": [
|
|
12912
|
+
{
|
|
12913
|
+
"file": "RFCS/registers/0218-audit-checkpoint-preimage.gaps.md",
|
|
12914
|
+
"token": "G1"
|
|
12915
|
+
}
|
|
12916
|
+
]
|
|
12917
|
+
},
|
|
12918
|
+
{
|
|
12919
|
+
"id": "openwop.gap.0219.1",
|
|
12920
|
+
"rfc": "0219",
|
|
12921
|
+
"local": "G1",
|
|
12922
|
+
"section": "§Compatibility / §C.2",
|
|
12923
|
+
"surface": "Two of the three certified hosts read a malformed value as `0.0` and refuse it (`openwop-examples` v2 reference host `router.ts`, openwop-app `protocolVersion.ts`). Under §C.2 both fail the planned `malformed-not-refused` leg.",
|
|
12924
|
+
"witness": "unclassified",
|
|
12925
|
+
"requirementId": null,
|
|
12926
|
+
"disposition": "closed",
|
|
12927
|
+
"target": null,
|
|
12928
|
+
"sources": [
|
|
12929
|
+
{
|
|
12930
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
12931
|
+
"token": "G1"
|
|
12932
|
+
}
|
|
12933
|
+
]
|
|
12934
|
+
},
|
|
12935
|
+
{
|
|
12936
|
+
"id": "openwop.gap.0219.2",
|
|
12937
|
+
"rfc": "0219",
|
|
12938
|
+
"local": "G2",
|
|
12939
|
+
"section": "§A / Unresolved question 1",
|
|
12940
|
+
"surface": "Whether the value names the corpus release the client implements (this RFC) or a product version (v1's `openwop-sdk/<v>`).",
|
|
12941
|
+
"witness": "unclassified",
|
|
12942
|
+
"requirementId": null,
|
|
12943
|
+
"disposition": "closed",
|
|
12944
|
+
"target": null,
|
|
12945
|
+
"sources": [
|
|
12946
|
+
{
|
|
12947
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
12948
|
+
"token": "G2"
|
|
12949
|
+
}
|
|
12950
|
+
]
|
|
12951
|
+
},
|
|
12952
|
+
{
|
|
12953
|
+
"id": "openwop.gap.0219.3",
|
|
12954
|
+
"rfc": "0219",
|
|
12955
|
+
"local": "G3",
|
|
12956
|
+
"section": "Unresolved question 3",
|
|
12957
|
+
"surface": "RFC 9110 §15.5.22 requires `Upgrade` on every `426`; none of the three hosts sends it and no v2 text names a value.",
|
|
12958
|
+
"witness": "unclassified",
|
|
12959
|
+
"requirementId": null,
|
|
12960
|
+
"disposition": "transferred",
|
|
12961
|
+
"target": "spec/v2/core/versioning.md",
|
|
12962
|
+
"sources": [
|
|
12963
|
+
{
|
|
12964
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
12965
|
+
"token": "G3"
|
|
12966
|
+
}
|
|
12967
|
+
]
|
|
12968
|
+
},
|
|
12969
|
+
{
|
|
12970
|
+
"id": "openwop.gap.0219.4",
|
|
12971
|
+
"rfc": "0219",
|
|
12972
|
+
"local": "G4",
|
|
12973
|
+
"section": "Unresolved question 5",
|
|
12974
|
+
"surface": "`client_version_unsupported` has `details: null`. Two hosts send `details.minClientVersion`, MyndHyve sends none.",
|
|
12975
|
+
"witness": "unclassified",
|
|
12976
|
+
"requirementId": null,
|
|
12977
|
+
"disposition": "closed",
|
|
12978
|
+
"target": null,
|
|
12979
|
+
"sources": [
|
|
12980
|
+
{
|
|
12981
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
12982
|
+
"token": "G4"
|
|
12983
|
+
}
|
|
12984
|
+
]
|
|
12985
|
+
},
|
|
12986
|
+
{
|
|
12987
|
+
"id": "openwop.gap.0219.5",
|
|
12988
|
+
"rfc": "0219",
|
|
12989
|
+
"local": "G5",
|
|
12990
|
+
"section": "Unresolved question 2",
|
|
12991
|
+
"surface": "The header's meaning on a `/v1/…` path during the overlap. The reference host applies the floor there; openwop-app does not.",
|
|
12992
|
+
"witness": "unclassified",
|
|
12993
|
+
"requirementId": null,
|
|
12994
|
+
"disposition": "closed",
|
|
12995
|
+
"target": null,
|
|
12996
|
+
"sources": [
|
|
12997
|
+
{
|
|
12998
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
12999
|
+
"token": "G5"
|
|
13000
|
+
}
|
|
13001
|
+
]
|
|
13002
|
+
},
|
|
13003
|
+
{
|
|
13004
|
+
"id": "openwop.gap.0219.6",
|
|
13005
|
+
"rfc": "0219",
|
|
13006
|
+
"local": "G6",
|
|
13007
|
+
"section": "§Implementation notes",
|
|
13008
|
+
"surface": "No v2 SDK sends the header today (`openwop-sdks`: `sdk/typescript-v2`, `sdk/python-v2`, Go).",
|
|
13009
|
+
"witness": "unclassified",
|
|
13010
|
+
"requirementId": null,
|
|
13011
|
+
"disposition": "transferred",
|
|
13012
|
+
"target": "rfc-0219",
|
|
13013
|
+
"sources": [
|
|
13014
|
+
{
|
|
13015
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
13016
|
+
"token": "G6"
|
|
13017
|
+
}
|
|
13018
|
+
]
|
|
13019
|
+
},
|
|
13020
|
+
{
|
|
13021
|
+
"id": "openwop.gap.0220.1",
|
|
13022
|
+
"rfc": "0220",
|
|
13023
|
+
"local": "G1",
|
|
13024
|
+
"section": "§C.2",
|
|
13025
|
+
"surface": "`a2uiSurface` has no tier-2 witness path. MyndHyve's v2 discovery drops `schemaVersions.kinds`, it serves no `POST /conformance/seams/sample/a2ui/emit-surface`, and its seams profile is off.",
|
|
13026
|
+
"witness": "unclassified",
|
|
13027
|
+
"requirementId": null,
|
|
13028
|
+
"disposition": "transferred",
|
|
13029
|
+
"target": "myndhyve/services/workflow-runtime",
|
|
13030
|
+
"sources": [
|
|
13031
|
+
{
|
|
13032
|
+
"file": "RFCS/registers/0220-ext-families-graduate-on-evidence.gaps.md",
|
|
13033
|
+
"token": "G1"
|
|
13034
|
+
}
|
|
13035
|
+
]
|
|
13036
|
+
},
|
|
13037
|
+
{
|
|
13038
|
+
"id": "openwop.gap.0220.2",
|
|
13039
|
+
"rfc": "0220",
|
|
13040
|
+
"local": "G2",
|
|
13041
|
+
"section": "§B",
|
|
13042
|
+
"surface": "The 11 reservations have no portable contract, so their `Stable` means \"advertised correctly by a tier-2 host\", not interoperation.",
|
|
13043
|
+
"witness": "unclassified",
|
|
13044
|
+
"requirementId": null,
|
|
13045
|
+
"disposition": "externally-gated",
|
|
13046
|
+
"target": "cross-host-demand",
|
|
13047
|
+
"sources": [
|
|
13048
|
+
{
|
|
13049
|
+
"file": "RFCS/registers/0220-ext-families-graduate-on-evidence.gaps.md",
|
|
13050
|
+
"token": "G2"
|
|
13051
|
+
}
|
|
13052
|
+
]
|
|
13053
|
+
},
|
|
13054
|
+
{
|
|
13055
|
+
"id": "openwop.gap.0220.3",
|
|
13056
|
+
"rfc": "0220",
|
|
13057
|
+
"local": "G3",
|
|
13058
|
+
"section": "§D",
|
|
13059
|
+
"surface": "`evidence/host-tiers.json` has no tier-3 row; the first independent host adds one.",
|
|
13060
|
+
"witness": "unclassified",
|
|
13061
|
+
"requirementId": null,
|
|
13062
|
+
"disposition": "externally-gated",
|
|
13063
|
+
"target": "tier-3-host",
|
|
13064
|
+
"sources": [
|
|
13065
|
+
{
|
|
13066
|
+
"file": "RFCS/registers/0220-ext-families-graduate-on-evidence.gaps.md",
|
|
13067
|
+
"token": "G3"
|
|
13068
|
+
}
|
|
13069
|
+
]
|
|
13070
|
+
},
|
|
13071
|
+
{
|
|
13072
|
+
"id": "openwop.gap.0221.1",
|
|
13073
|
+
"rfc": "0221",
|
|
13074
|
+
"local": "G1",
|
|
13075
|
+
"section": "§Implementation notes",
|
|
13076
|
+
"surface": "MyndHyve's behaviour for a secret-less registration is unmeasured.",
|
|
13077
|
+
"witness": "unclassified",
|
|
13078
|
+
"requirementId": null,
|
|
13079
|
+
"disposition": "externally-gated",
|
|
13080
|
+
"target": "myndhyve-next-cut",
|
|
13081
|
+
"sources": [
|
|
13082
|
+
{
|
|
13083
|
+
"file": "RFCS/registers/0221-generated-webhook-secret-returned-once.gaps.md",
|
|
13084
|
+
"token": "G1"
|
|
13085
|
+
}
|
|
13086
|
+
]
|
|
13087
|
+
},
|
|
12901
13088
|
{
|
|
12902
13089
|
"id": "openwop.gap.spec.a2a-integration.g1",
|
|
12903
13090
|
"rfc": "0152",
|
package/spec/v1/migrations.json
CHANGED
|
@@ -1038,6 +1038,24 @@
|
|
|
1038
1038
|
"deprecationId": null,
|
|
1039
1039
|
"note": "Envelopes are transient; a persisted envelope.* event is read through the adapter."
|
|
1040
1040
|
},
|
|
1041
|
+
{
|
|
1042
|
+
"id": "openwop.migration.C4.17",
|
|
1043
|
+
"child": "C4",
|
|
1044
|
+
"kind": "remove",
|
|
1045
|
+
"v1": {
|
|
1046
|
+
"surface": "optional `locale` on `InterruptPayload.data` and on the resume payload (i18n.md §\"`locale` field on `InterruptPayload`\")",
|
|
1047
|
+
"path": "spec/v1/i18n.md"
|
|
1048
|
+
},
|
|
1049
|
+
"v2": {
|
|
1050
|
+
"surface": "none — interrupt data and resume bodies are closed; the rendered locale is request-scoped (`Content-Language`, spec/v2/core/i18n.md)"
|
|
1051
|
+
},
|
|
1052
|
+
"codemod": "openwop.codemod.interrupt-locale-drop",
|
|
1053
|
+
"persistedData": "translated",
|
|
1054
|
+
"requirementIds": [],
|
|
1055
|
+
"gapIds": [],
|
|
1056
|
+
"deprecationId": "openwop.deprecation.interrupt-locale-field",
|
|
1057
|
+
"note": "Recorded 2026-09-27: the v2 schema closure (C4.9) left the v1 field no place, and it is dropped rather than re-added. A v1 `interrupt.requested` event carrying `data.locale` is read through the C.9 adapter like any other extra key."
|
|
1058
|
+
},
|
|
1041
1059
|
{
|
|
1042
1060
|
"id": "openwop.migration.C6.1",
|
|
1043
1061
|
"child": "C6",
|