@openwop/spec-artifacts 2.42.5 → 2.42.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CORPUS-STAMP.json +64 -63
- package/api/seams-v2.yaml +238 -316
- package/api/v2/asyncapi.yaml +83 -113
- package/api/v2/openapi.yaml +339 -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 +2 -5
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/gaps.json +171 -1
- package/spec/v2/README.md +34 -36
- 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 +22 -14
- package/spec/v2/core/host-services.md +22 -5
- 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/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 +95 -49
- package/spec/v2/core/webhooks.md +59 -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 +24 -7
- package/spec/v2/declaration.schema.json +10 -0
- package/spec/v2/errors.json +109 -2
- 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 +542 -2
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
# Discovery and Capabilities
|
|
2
2
|
|
|
3
|
-
> **Status: Stable
|
|
3
|
+
> **Status: Stable.**
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
A host advertises what it supports in one discovery document. Every capability family in it is one record type on a closed root, generated from one declaration file. That file also mints the pack peer-dependency identifiers and the `§` anchors below. Profiles are derived predicates, never a wire field.
|
|
8
8
|
|
|
9
|
-
## 1. One well-known resource
|
|
9
|
+
## 1. One well-known resource
|
|
10
10
|
|
|
11
|
-
`/.well-known/openwop` is one resource. Its representation MUST be selected by `OpenWOP-Version
|
|
11
|
+
`/.well-known/openwop` is one resource. Its representation MUST be selected by `OpenWOP-Version`, per [`versioning.md`](versioning.md) §1.3:
|
|
12
|
+
|
|
13
|
+
- No header ⇒ the v1 document, with `protocolVersions[]` and `preferredVersion` added, through the overlap.
|
|
14
|
+
- `OpenWOP-Version: 2` ⇒ the closed v2 root.
|
|
15
|
+
|
|
16
|
+
A single fetch answers the major the client speaks and names the other. A v2 root MUST NOT contain a v1 sub-object; one document never carries per-major sub-objects.
|
|
12
17
|
|
|
13
18
|
### 1.1 Cache validators
|
|
14
19
|
|
|
15
|
-
A host MUST emit a standard `ETag` on the discovery document and MUST honor `If-None-Match` with `304`.
|
|
20
|
+
A host MUST emit a standard `ETag` on the discovery document and MUST honor `If-None-Match` with `304`. The v2 representation has no `Capabilities-Etag`: the document's bytes are its negotiation identity. A host that changes semantics without changing bytes is non-conformant.
|
|
21
|
+
|
|
22
|
+
### 1.2 Removal triggers
|
|
16
23
|
|
|
17
|
-
|
|
24
|
+
Each `deprecations.json` row carries a `removalTrigger` (`v2.0-cut | v1-end-of-support`). The following MUST be absent from the v2 representation and MUST be removed from the v1 representation at v1 end-of-support ([`overview.md`](overview.md)):
|
|
18
25
|
|
|
19
|
-
|
|
26
|
+
- the wrapper (`capabilities-wrapper`);
|
|
27
|
+
- the dotted mirror (`host-dotted-mirror`);
|
|
28
|
+
- `Capabilities-Etag` (`capabilities-etag-header`).
|
|
20
29
|
|
|
21
|
-
|
|
30
|
+
The `/.well-known/wop` alias (`well-known-wop-alias`) carries the same trigger.
|
|
31
|
+
|
|
32
|
+
## 2. The capability record
|
|
22
33
|
|
|
23
34
|
Every family at the v2 root is one object:
|
|
24
35
|
|
|
@@ -30,370 +41,426 @@ Every family at the v2 root is one object:
|
|
|
30
41
|
...facets }
|
|
31
42
|
```
|
|
32
43
|
|
|
33
|
-
|
|
|
44
|
+
| Field | Rule |
|
|
34
45
|
| --- | --- |
|
|
35
|
-
|
|
|
46
|
+
| `status`, `since`, `witness` | MUST be present |
|
|
36
47
|
| `until` | REQUIRED when `status` is `experimental` or `deprecated`; MUST NOT be present when `stable` |
|
|
37
|
-
| `until` in the past |
|
|
38
|
-
| `witness` | MUST be one of the five wire-legal classes
|
|
39
|
-
| `supported` |
|
|
40
|
-
| facets |
|
|
48
|
+
| `until` in the past | Non-conformant; a validator MUST answer `400` `until_in_past` |
|
|
49
|
+
| `witness` | MUST be one of the five wire-legal classes |
|
|
50
|
+
| `supported` | Not a field: the record's presence is the claim, and a host that does not support a family MUST omit it |
|
|
51
|
+
| facets | A facet is advertised by the presence of its key; a host MUST omit the key for a facet it does not offer, except where the facet's own schema states a meaning for its absence |
|
|
52
|
+
|
|
53
|
+
`unwitnessable` MUST NOT appear on a wire record; such a family lives in `spec/v2/ext/` and is not advertised.
|
|
41
54
|
|
|
42
|
-
|
|
55
|
+
A family's facets are hand-decided where `spec/v2/facets/<key>.schema.json` exists, and otherwise generated from the declaration row.
|
|
43
56
|
|
|
44
|
-
## 3. The closed root
|
|
57
|
+
## 3. The closed root
|
|
45
58
|
|
|
46
|
-
The root of `schemas/v2/capabilities.schema.json` is `additionalProperties: false
|
|
59
|
+
The root of `schemas/v2/capabilities.schema.json` is `additionalProperties: false`, and `protocolVersions` and `preferredVersion` are REQUIRED. Every root key is one of:
|
|
47
60
|
|
|
48
|
-
|
|
61
|
+
- a metadata key (§3.1);
|
|
62
|
+
- a core family (§5);
|
|
63
|
+
- an `ext/` family (§6);
|
|
64
|
+
- `extensions` (§3.2).
|
|
49
65
|
|
|
50
|
-
|
|
66
|
+
Any other key MUST fail validation: no dotted key, no wrapper, no mirror, no root `profiles[]`.
|
|
67
|
+
|
|
68
|
+
### 3.1 Metadata keys (18)
|
|
69
|
+
|
|
70
|
+
`protocolVersion`, `protocolVersions`, `preferredVersion`, `extensions`, `implementation`, `engineVersion`, `eventLogSchemaVersion`, `configurable`, `observability`, `minClientVersion`, `runtimeCapabilities`, `testing`, `conformance`, `fixtures`, `compliance`, `signingKeys`, `discovery`, and `supportedTransports`.
|
|
71
|
+
|
|
72
|
+
- Each is declared as metadata, with its own schema, in `spec/v2/declaration.json`. A metadata key is not a record and carries no `status` or `witness`.
|
|
73
|
+
- `supportedTransports` is declared only to record its deletion (§4).
|
|
74
|
+
- The version-axis keys are specified in [`versioning.md`](versioning.md); `configurable` in [`runs.md`](runs.md); `signingKeys` in [`conformance.md`](conformance.md).
|
|
75
|
+
- `implementation` (`name`, `version`, `vendor`, `url`) is self-reported: a client SHOULD NOT change behaviour because of it or authorize from it.
|
|
51
76
|
|
|
52
77
|
### 3.2 `extensions.<org>.<name>`
|
|
53
78
|
|
|
54
|
-
Vendor and host extensions live under one key, `extensions
|
|
79
|
+
Vendor and host extensions live under one key, `extensions`. Its members MUST match `^[a-z][a-z0-9]*(-[a-z0-9]+)*\.[a-z][a-z0-9]*(-[a-z0-9]+)*$` (short form `<org>.<name>`).
|
|
80
|
+
|
|
81
|
+
- The orgs in `spec/v2/declaration.json` `reservedOrgs` — `openwop`, `vendor`, `effect-seams` and `events` — are reserved: a host MUST NOT use any of them.
|
|
82
|
+
- An extension record's shape is the org's own (`additionalProperties: true` inside the record).
|
|
83
|
+
- An extension family of §6 is advertised as `extensions["<org>.<extensionName>"]`, where `extensionName` is the kebab-case name its declaration row carries (for example `rest-transport`). The family key itself MUST NOT appear at the root.
|
|
84
|
+
- A change to an extension that would break an existing reader MUST ship under a new key.
|
|
85
|
+
- A host MUST NOT read one key's record as another's (A2A §4.6.3).
|
|
86
|
+
|
|
87
|
+
## 4. Deleted keys
|
|
55
88
|
|
|
56
|
-
|
|
89
|
+
These keys are not part of the v2 root:
|
|
57
90
|
|
|
58
91
|
| Key | Why |
|
|
59
92
|
| --- | --- |
|
|
60
|
-
| `contractProvenance` |
|
|
61
|
-
| `supportedTransports` | REST is the wire (interop.md
|
|
62
|
-
| `grpc` |
|
|
63
|
-
| `Capabilities-Etag`, `auth.subjectLinking`, `replay.fork`, bare `a2a.supported` / `mcp.supported`, the `openwop-core` alias |
|
|
64
|
-
| `host.media`, `host.collaboration` |
|
|
93
|
+
| `contractProvenance` | An advisory self-declaration the wire cannot falsify |
|
|
94
|
+
| `supportedTransports` | REST is the wire ([`interop.md`](interop.md)) |
|
|
95
|
+
| `grpc` | Unwitnessable, so not advertisable ([`interop.md`](interop.md) §gRPC) |
|
|
96
|
+
| `Capabilities-Etag`, `auth.subjectLinking`, `replay.fork`, bare `a2a.supported` / `mcp.supported`, the `openwop-core` alias | Rows `C2.1`–`C2.10` in `spec/v1/migrations.json` give each its codemod |
|
|
97
|
+
| `host.media`, `host.collaboration` | A closed root cannot represent reserved slots |
|
|
65
98
|
|
|
66
|
-
`
|
|
99
|
+
`host.workspace` is the declared family `workspace`. `minimumSuiteVersion` lives in the declaration file ([`versioning.md`](versioning.md) axis 9).
|
|
67
100
|
|
|
68
|
-
## 4.1 The declaration file
|
|
101
|
+
## 4.1 The declaration file
|
|
69
102
|
|
|
70
|
-
`spec/v2/declaration.json` (schema `spec/v2/declaration.schema.json`) is the single source for:
|
|
103
|
+
`spec/v2/declaration.json` (schema `spec/v2/declaration.schema.json`) is the single source for:
|
|
104
|
+
|
|
105
|
+
- the generated `schemas/v2/capabilities.schema.json`;
|
|
106
|
+
- each family's `witness` class and maturity;
|
|
107
|
+
- the pack peer-dependency identifier, identical to the root key;
|
|
108
|
+
- the spec anchor (`core/capabilities.md#<key>` or `ext/<key>/`);
|
|
109
|
+
- the floor scenarios and requirement ids that define `openwop-core-standard`;
|
|
110
|
+
- the profile predicates (§7).
|
|
111
|
+
|
|
112
|
+
Operation paths live in `spec/v2/path-manifest.json` ([`versioning.md`](versioning.md)). The declaration is generated from nothing and checked against everything (`scripts/check-declaration.mjs`).
|
|
71
113
|
|
|
72
114
|
## 5. Core families (72)
|
|
73
115
|
|
|
74
|
-
Each heading is a `spec/v2/declaration.json` row with `anchor: core
|
|
116
|
+
Each heading below is a `spec/v2/declaration.json` row with `anchor: core`. `scripts/check-declaration.mjs` MUST fail when a heading here, a root key in the generated schema, or a pack peer-dependency identifier names a family the declaration does not. The peer-dependency identifier is identical to the key ([`packs.md`](packs.md)).
|
|
117
|
+
|
|
118
|
+
Under each heading: the family's witness class and, where `spec/v2/facets/<key>.schema.json` exists, its hand-decided facets. Maturity axes are §8; the owning RFC is the row's `owningRfc`.
|
|
75
119
|
|
|
76
120
|
### § supportedEnvelopes
|
|
77
121
|
|
|
78
|
-
Witness `witnessable-gated
|
|
122
|
+
Witness `witnessable-gated`. Facets: `kinds`.
|
|
79
123
|
|
|
80
124
|
### § schemaVersions
|
|
81
125
|
|
|
82
|
-
Witness `witnessable-gated
|
|
126
|
+
Witness `witnessable-gated`. Facets: `kinds`.
|
|
83
127
|
|
|
84
128
|
### § limits
|
|
85
129
|
|
|
86
|
-
Witness `witnessable-gated
|
|
130
|
+
Witness `witnessable-gated`.
|
|
87
131
|
|
|
88
132
|
### § envelopeStrictness
|
|
89
133
|
|
|
90
|
-
Witness `claims-check
|
|
134
|
+
Witness `claims-check`. Facets: `mode`.
|
|
91
135
|
|
|
92
136
|
### § envelopeContracts
|
|
93
137
|
|
|
94
|
-
Witness `claims-check
|
|
138
|
+
Witness `claims-check`.
|
|
95
139
|
|
|
96
140
|
### § envelopes
|
|
97
141
|
|
|
98
|
-
Witness `claims-check
|
|
142
|
+
Witness `claims-check`.
|
|
99
143
|
|
|
100
144
|
### § prompts
|
|
101
145
|
|
|
102
|
-
Witness `witnessable-gated
|
|
146
|
+
Witness `witnessable-gated`.
|
|
103
147
|
|
|
104
148
|
### § nodePackRuntimes
|
|
105
149
|
|
|
106
|
-
Witness `claims-check
|
|
150
|
+
Witness `claims-check`.
|
|
107
151
|
|
|
108
152
|
### § secrets
|
|
109
153
|
|
|
110
|
-
Witness `witnessable-gated
|
|
154
|
+
Witness `witnessable-gated`.
|
|
111
155
|
|
|
112
156
|
### § connections
|
|
113
157
|
|
|
114
|
-
Witness `witnessable-gated
|
|
158
|
+
Witness `witnessable-gated`.
|
|
115
159
|
|
|
116
160
|
### § selfHostedRunner
|
|
117
161
|
|
|
118
|
-
Witness `witnessable-gated
|
|
162
|
+
Witness `witnessable-gated`.
|
|
119
163
|
|
|
120
164
|
### § purposePropagation
|
|
121
165
|
|
|
122
|
-
Witness `witnessable-gated
|
|
166
|
+
Witness `witnessable-gated`.
|
|
123
167
|
|
|
124
168
|
### § dataResidency
|
|
125
169
|
|
|
126
|
-
Witness `witnessable-gated
|
|
170
|
+
Witness `witnessable-gated`.
|
|
127
171
|
|
|
128
172
|
### § anonymousActor
|
|
129
173
|
|
|
130
|
-
Witness `seam-gated
|
|
174
|
+
Witness `seam-gated`.
|
|
131
175
|
|
|
132
176
|
### § credentials
|
|
133
177
|
|
|
134
|
-
Witness `witnessable-gated
|
|
178
|
+
Witness `witnessable-gated`.
|
|
135
179
|
|
|
136
180
|
### § feedback
|
|
137
181
|
|
|
138
|
-
Witness `witnessable-gated
|
|
182
|
+
Witness `witnessable-gated`.
|
|
139
183
|
|
|
140
184
|
### § replay
|
|
141
185
|
|
|
142
|
-
Witness `witnessable-gated
|
|
186
|
+
Witness `witnessable-gated`. Facets: `modes`, `retention`, `effectSeamsManifest`.
|
|
143
187
|
|
|
144
188
|
### § oauth
|
|
145
189
|
|
|
146
|
-
Witness `witnessable-gated
|
|
190
|
+
Witness `witnessable-gated`.
|
|
147
191
|
|
|
148
192
|
### § authorization
|
|
149
193
|
|
|
150
|
-
Witness `witnessable-gated
|
|
194
|
+
Witness `witnessable-gated`.
|
|
151
195
|
|
|
152
196
|
### § multiPartyConversation
|
|
153
197
|
|
|
154
|
-
Witness `witnessable-gated
|
|
198
|
+
Witness `witnessable-gated`.
|
|
155
199
|
|
|
156
200
|
### § conversationTurnModelProvenance
|
|
157
201
|
|
|
158
|
-
Witness `witnessable-gated
|
|
202
|
+
Witness `witnessable-gated`.
|
|
159
203
|
|
|
160
204
|
### § channelPresence
|
|
161
205
|
|
|
162
|
-
Witness `witnessable-gated
|
|
206
|
+
Witness `witnessable-gated`.
|
|
163
207
|
|
|
164
208
|
### § multiAgent
|
|
165
209
|
|
|
166
|
-
Witness `claims-check
|
|
210
|
+
Witness `claims-check`.
|
|
167
211
|
|
|
168
212
|
### § modelCapabilities
|
|
169
213
|
|
|
170
|
-
Witness `witnessable-gated
|
|
214
|
+
Witness `witnessable-gated`.
|
|
171
215
|
|
|
172
216
|
### § providerUsage
|
|
173
217
|
|
|
174
|
-
Witness `witnessable-gated
|
|
218
|
+
Witness `witnessable-gated`.
|
|
175
219
|
|
|
176
220
|
### § aiProviders
|
|
177
221
|
|
|
178
|
-
Witness `witnessable-gated
|
|
222
|
+
Witness `witnessable-gated`. Facets: `providers`, `byok`, `selfHosted`, `speechSynthesis`, `imageGeneration`, `videoGeneration`, `realtimeVoice`, `promptPrefixCache`, `maxInlineMediaBytes`, `authModes`, `policies`, `input`.
|
|
179
223
|
|
|
180
224
|
### § agents
|
|
181
225
|
|
|
182
|
-
Witness `witnessable-gated
|
|
226
|
+
Witness `witnessable-gated`.
|
|
183
227
|
|
|
184
228
|
### § memory
|
|
185
229
|
|
|
186
|
-
Witness `witnessable-gated
|
|
230
|
+
Witness `witnessable-gated`.
|
|
187
231
|
|
|
188
232
|
### § conversationPrimitive
|
|
189
233
|
|
|
190
|
-
Witness `claims-check
|
|
234
|
+
Witness `claims-check`.
|
|
191
235
|
|
|
192
236
|
### § subWorkflow
|
|
193
237
|
|
|
194
|
-
Witness `claims-check
|
|
238
|
+
Witness `claims-check`.
|
|
195
239
|
|
|
196
240
|
### § fs
|
|
197
241
|
|
|
198
|
-
Witness `witnessable-gated
|
|
242
|
+
Witness `witnessable-gated`.
|
|
199
243
|
|
|
200
244
|
### § kvStorage
|
|
201
245
|
|
|
202
|
-
Witness `witnessable-gated
|
|
246
|
+
Witness `witnessable-gated`.
|
|
203
247
|
|
|
204
248
|
### § tableStorage
|
|
205
249
|
|
|
206
|
-
Witness `witnessable-gated
|
|
250
|
+
Witness `witnessable-gated`.
|
|
207
251
|
|
|
208
252
|
### § queueBus
|
|
209
253
|
|
|
210
|
-
Witness `witnessable-gated
|
|
254
|
+
Witness `witnessable-gated`.
|
|
211
255
|
|
|
212
256
|
### § scheduling
|
|
213
257
|
|
|
214
|
-
Witness `witnessable-gated
|
|
258
|
+
Witness `witnessable-gated`.
|
|
215
259
|
|
|
216
260
|
### § heartbeat
|
|
217
261
|
|
|
218
|
-
Witness `witnessable-gated
|
|
262
|
+
Witness `witnessable-gated`. Facets: `minIntervalSec`, `maxRuntimeMs`, `deliveryChannel`.
|
|
219
263
|
|
|
220
264
|
### § toolHooks
|
|
221
265
|
|
|
222
|
-
Witness `witnessable-gated
|
|
266
|
+
Witness `witnessable-gated`.
|
|
223
267
|
|
|
224
268
|
### § toolCatalog
|
|
225
269
|
|
|
226
|
-
Witness `witnessable-gated
|
|
270
|
+
Witness `witnessable-gated`.
|
|
227
271
|
|
|
228
272
|
### § httpClient
|
|
229
273
|
|
|
230
|
-
Witness `witnessable-gated
|
|
274
|
+
Witness `witnessable-gated`.
|
|
231
275
|
|
|
232
276
|
### § artifactTypes
|
|
233
277
|
|
|
234
|
-
Witness `witnessable-gated
|
|
278
|
+
Witness `witnessable-gated`.
|
|
235
279
|
|
|
236
280
|
### § forms
|
|
237
281
|
|
|
238
|
-
Witness `claims-check
|
|
282
|
+
Witness `claims-check`.
|
|
239
283
|
|
|
240
284
|
### § aiEnvelope
|
|
241
285
|
|
|
242
|
-
Witness `witnessable-gated
|
|
286
|
+
Witness `witnessable-gated`.
|
|
243
287
|
|
|
244
288
|
### § promptLibrary
|
|
245
289
|
|
|
246
|
-
Witness `claims-check
|
|
290
|
+
Witness `claims-check`.
|
|
247
291
|
|
|
248
292
|
### § agentRuntime
|
|
249
293
|
|
|
250
|
-
Witness `claims-check
|
|
294
|
+
Witness `claims-check`.
|
|
251
295
|
|
|
252
296
|
### § deadLetter
|
|
253
297
|
|
|
254
|
-
Witness `witnessable-gated
|
|
298
|
+
Witness `witnessable-gated`.
|
|
255
299
|
|
|
256
300
|
### § webhooks
|
|
257
301
|
|
|
258
|
-
Witness `witnessable-gated
|
|
302
|
+
Witness `witnessable-gated`. Facets: `deadLetter`, `retryPolicy`, `secretRotation`, `signatureAlgorithms`.
|
|
259
303
|
|
|
260
304
|
### § triggerBridge
|
|
261
305
|
|
|
262
|
-
Witness `witnessable-gated
|
|
306
|
+
Witness `witnessable-gated`.
|
|
263
307
|
|
|
264
308
|
### § a2a
|
|
265
309
|
|
|
266
|
-
Witness `seam-gated
|
|
310
|
+
Witness `seam-gated`. Facets: `versions`, `preferredVersion`, `minimumVersion`, `refreshedAt`, `profiles`, `agentCardUrl`, `streaming`, `pushNotifications`, `durableTasks`, `agentCards`.
|
|
311
|
+
|
|
312
|
+
A facet MAY name a URL on another origin; that is a claim about the facet, not the origin. `agentCardUrl` (and `mcp.serverUrls[]`) are `format: uri` with no origin constraint.
|
|
313
|
+
|
|
314
|
+
- The advertiser knows where the card is, not that the named origin serves `/.well-known/openwop` or speaks any major.
|
|
315
|
+
- The suite exercises the advertiser only, and certification is per origin.
|
|
267
316
|
|
|
268
|
-
|
|
317
|
+
Open gap: whether a facet naming an origin that does not answer SHOULD be withdrawn, and how a client learns that origin's major.
|
|
269
318
|
|
|
270
319
|
### § budget
|
|
271
320
|
|
|
272
|
-
Witness `witnessable-gated
|
|
321
|
+
Witness `witnessable-gated`.
|
|
273
322
|
|
|
274
323
|
### § nondeterminismPolicy
|
|
275
324
|
|
|
276
|
-
Witness `claims-check
|
|
325
|
+
Witness `claims-check`.
|
|
277
326
|
|
|
278
327
|
### § workspace
|
|
279
328
|
|
|
280
|
-
Witness `witnessable-gated
|
|
329
|
+
Witness `witnessable-gated`.
|
|
281
330
|
|
|
282
331
|
### § uiPlugins
|
|
283
332
|
|
|
284
|
-
Witness `witnessable-gated
|
|
333
|
+
Witness `witnessable-gated`.
|
|
285
334
|
|
|
286
335
|
### § sql
|
|
287
336
|
|
|
288
|
-
Witness `witnessable-gated
|
|
337
|
+
Witness `witnessable-gated`.
|
|
289
338
|
|
|
290
339
|
### § nosql
|
|
291
340
|
|
|
292
|
-
Witness `claims-check
|
|
341
|
+
Witness `claims-check`.
|
|
293
342
|
|
|
294
343
|
### § vectorStore
|
|
295
344
|
|
|
296
|
-
Witness `witnessable-gated
|
|
345
|
+
Witness `witnessable-gated`.
|
|
297
346
|
|
|
298
347
|
### § searchIndex
|
|
299
348
|
|
|
300
|
-
Witness `witnessable-gated
|
|
349
|
+
Witness `witnessable-gated`.
|
|
301
350
|
|
|
302
351
|
### § blobStorage
|
|
303
352
|
|
|
304
|
-
Witness `witnessable-gated
|
|
353
|
+
Witness `witnessable-gated`.
|
|
305
354
|
|
|
306
355
|
### § cache
|
|
307
356
|
|
|
308
|
-
Witness `witnessable-gated
|
|
357
|
+
Witness `witnessable-gated`.
|
|
309
358
|
|
|
310
359
|
### § workflowChainPacks
|
|
311
360
|
|
|
312
|
-
Witness `witnessable-gated
|
|
361
|
+
Witness `witnessable-gated`. Facets: `subChains`.
|
|
313
362
|
|
|
314
363
|
### § packs
|
|
315
364
|
|
|
316
|
-
Witness `claims-check
|
|
365
|
+
Witness `claims-check`. Facets: `testMode`.
|
|
317
366
|
|
|
318
367
|
### § mcp
|
|
319
368
|
|
|
320
|
-
Witness `seam-gated
|
|
369
|
+
Witness `seam-gated`. Facets: `revisions`, `preferredVersion`, `minimumRevision`, `refreshedAt`, `profiles`, `features`, `serverUrls`, `serverMount`, `mrtr`, `client`.
|
|
321
370
|
|
|
322
|
-
`serverUrls[]` MAY name other origins;
|
|
371
|
+
`serverUrls[]` MAY name other origins; the off-origin rule under § a2a applies.
|
|
323
372
|
|
|
324
373
|
### § sandbox
|
|
325
374
|
|
|
326
|
-
Witness `witnessable-gated
|
|
375
|
+
Witness `witnessable-gated`. Facets: `isolationModel`, `allowedHostCalls`, `memoryLimitBytes`, `wallClockLimitMs`.
|
|
327
376
|
|
|
328
377
|
### § compensation
|
|
329
378
|
|
|
330
|
-
Witness `seam-gated
|
|
379
|
+
Witness `seam-gated`.
|
|
331
380
|
|
|
332
381
|
### § idempotency
|
|
333
382
|
|
|
334
|
-
Witness `witnessable-gated
|
|
383
|
+
Witness `witnessable-gated`.
|
|
335
384
|
|
|
336
385
|
### § eventLog
|
|
337
386
|
|
|
338
|
-
Witness `claims-check
|
|
387
|
+
Witness `claims-check`.
|
|
339
388
|
|
|
340
389
|
### § production
|
|
341
390
|
|
|
342
|
-
Witness `witnessable-gated
|
|
391
|
+
Witness `witnessable-gated`.
|
|
343
392
|
|
|
344
393
|
### § auth
|
|
345
394
|
|
|
346
|
-
Witness `seam-gated
|
|
395
|
+
Witness `seam-gated`. Facets: `lanes`, `subjectLinkKey`.
|
|
347
396
|
|
|
348
397
|
### § i18n
|
|
349
398
|
|
|
350
|
-
Witness `witnessable-gated
|
|
399
|
+
Witness `witnessable-gated`.
|
|
351
400
|
|
|
352
401
|
### § content
|
|
353
402
|
|
|
354
|
-
Witness `witnessable-gated
|
|
403
|
+
Witness `witnessable-gated`.
|
|
355
404
|
|
|
356
405
|
### § portability
|
|
357
406
|
|
|
358
|
-
Witness `witnessable-gated
|
|
407
|
+
Witness `witnessable-gated`.
|
|
359
408
|
|
|
360
409
|
### § interrupt
|
|
361
410
|
|
|
362
|
-
Witness `witnessable-gated
|
|
411
|
+
Witness `witnessable-gated`. Facets: `refKinds`, `tokenAlgs`, `callbackDelivery`.
|
|
363
412
|
|
|
364
413
|
### § runList
|
|
365
414
|
|
|
366
|
-
Witness `witnessable-gated
|
|
415
|
+
Witness `witnessable-gated`. Facets: `maxPageSize`, `filters` ([runs.md](runs.md) §List).
|
|
416
|
+
|
|
367
417
|
|
|
368
418
|
## 6. Extension families (13)
|
|
369
419
|
|
|
370
|
-
Rows with `anchor: ext` are documented under `spec/v2/ext/<key
|
|
420
|
+
Rows with `anchor: ext` are documented under `spec/v2/ext/<key>/`. Each document MUST declare `witness` and both maturity axes in its header ([`overview.md`](overview.md)). The families are `restTransport`, `a2uiSurface`, `brand`, `canvas`, `chat`, `coordination`, `dataIntegration`, `entities`, `kanban`, `knowledge`, `launchStudio`, `messaging`, `webResearch`.
|
|
421
|
+
|
|
422
|
+
- Each is advertised under `extensions` (§3.2), never at the root. `a2uiSurface` is the exception: its contract is admitted through `schemaVersions.kinds`, and only its deprecated facet is an `extensions` record.
|
|
423
|
+
- `restTransport` (`witnessable-gated`) and `a2uiSurface` (`seam-gated`) have behavioral witnesses. The other 11 are discovery-only reservations checked by `claims-check`.
|
|
424
|
+
- An ext document's `Draft`/`Stable` label is a predicate over certified evidence ([`../ext/README.md`](../ext/README.md)). Becoming core takes its own RFC.
|
|
371
425
|
|
|
372
|
-
## 7. Profiles
|
|
426
|
+
## 7. Profiles
|
|
373
427
|
|
|
374
|
-
A profile is a predicate over the declaration file, published in `spec/v2/profiles.json` (generated): every listed family present as a record and every listed metadata key present.
|
|
428
|
+
A profile is a predicate over the declaration file, published in `spec/v2/profiles.json` (generated): every listed family is present as a record, and every listed metadata key is present.
|
|
375
429
|
|
|
376
430
|
| Profile | Predicate |
|
|
377
431
|
| --- | --- |
|
|
378
|
-
| `openwop-discovery-core` |
|
|
379
|
-
| `openwop-core-standard` |
|
|
380
|
-
| `openwop-conformance-seams-v2` |
|
|
432
|
+
| `openwop-discovery-core` | Metadata `protocolVersions`, `preferredVersion` |
|
|
433
|
+
| `openwop-core-standard` | Families `interrupt`, `replay`, `webhooks`, `idempotency`, `eventLog`, plus the 2.0.0 floor scenarios and requirement ids the declaration names |
|
|
434
|
+
| `openwop-conformance-seams-v2` | The seams profile ([`conformance.md`](conformance.md)); forbidden from the capability namespace |
|
|
381
435
|
|
|
382
|
-
|
|
436
|
+
- The v2 root has no `profiles[]`; a host that emits one MUST fail schema validation (§3).
|
|
437
|
+
- The facet `auth.lanes[]` ([`identity.md`](identity.md)) replaces `auth.profiles`.
|
|
438
|
+
- `a2a.profiles[]` and `mcp.profiles[]` are facets that admit no `-legacy` id; the offered versions are `a2a.versions[]` and `mcp.revisions[]` ([`interop.md`](interop.md)).
|
|
439
|
+
- The discovery-only id is `openwop-discovery-core`; the `openwop-core` alias is deleted (row `C2.3`).
|
|
440
|
+
- The claim vocabulary is in [`overview.md`](overview.md). The invariant `profile-claim-floor-not-overstated` is registered in `SECURITY/invariants.yaml` with its test.
|
|
383
441
|
|
|
384
|
-
## 8. Maturity axes
|
|
442
|
+
## 8. Maturity axes
|
|
385
443
|
|
|
386
444
|
| Axis | Values | Source |
|
|
387
445
|
| --- | --- | --- |
|
|
388
|
-
| `technical` | `experimental \| stable \| deprecated` |
|
|
389
|
-
| `adoption` | `none \| single-witness \| multi-witness \| independent` |
|
|
446
|
+
| `technical` | `experimental \| stable \| deprecated` | The record's `status`, which MUST NOT exceed the declaration row |
|
|
447
|
+
| `adoption` | `none \| single-witness \| multi-witness \| independent` | Derived from INTEROP-MATRIX bundle evidence |
|
|
448
|
+
|
|
449
|
+
- `stable` does not require a tier-3 host; `independent` records whether one exists.
|
|
450
|
+
- There is no cap on the number of families: a family MAY exist at any count if it declares its witness class.
|
|
451
|
+
- `memory.injectionBudget`, `toolCatalog.compactView`, and `aiProviders.promptPrefixCache` keep their families with `adoption: single-witness`.
|
|
452
|
+
|
|
453
|
+
## 9. Externally-gated
|
|
454
|
+
|
|
455
|
+
`externally-gated` is the disposition for a surface held on grounds that are neither technical nor adoption, such as a legal citation or a non-steward host tripwire.
|
|
390
456
|
|
|
391
|
-
|
|
457
|
+
- An externally-gated family MAY be declared with `status: experimental` and an `until` equal to the tripwire review date, or omitted.
|
|
458
|
+
- It MUST NOT be `stable` (`externally-gated-never-stable`).
|
|
392
459
|
|
|
393
|
-
|
|
460
|
+
`sandbox` is externally gated.
|
|
394
461
|
|
|
395
|
-
|
|
462
|
+
## 10. Migration rows
|
|
396
463
|
|
|
397
|
-
|
|
464
|
+
Rows `C2.1`–`C2.10` are `spec/v1/migrations.json` entries. `openwop.codemod.discovery-document-v2` transforms `C2.2`–`C2.8`: it drops a family with `supported: false` and promotes a dotted-only declared family to its plain key. Certification bundles naming `openwop-core` are never upgraded; they remain valid v1 evidence at their version.
|
|
398
465
|
|
|
399
|
-
|
|
466
|
+
*Sources: RFC 0144, RFC 0169, RFC 0175, RFC 0176, RFC 0179, RFC 0197. Each family's owning RFC is its `owningRfc` in [`declaration.json`](../declaration.json).*
|