@openwop/spec-artifacts 2.12.0 → 2.14.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 +14 -14
- package/api/seams-v2.yaml +1 -1
- package/api/v2/asyncapi.yaml +1 -1
- package/api/v2/openapi.yaml +1 -1
- package/package.json +1 -1
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/gaps.json +35 -1
- package/spec/v2/core/identity.md +3 -0
- package/spec/v2/core/interop.md +2 -1
- package/spec/v2/core/runs.md +1 -0
- package/spec/v2/core/security-defaults.md +5 -0
- package/spec/v2/declaration.json +9 -0
- package/spec/v2/release.json +2 -2
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.
|
|
5
|
-
"corpusTag": "v2.
|
|
4
|
+
"version": "2.14.0",
|
|
5
|
+
"corpusTag": "v2.14.0",
|
|
6
6
|
"files": {
|
|
7
7
|
"api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
|
|
8
8
|
"api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
|
|
9
9
|
"api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
|
|
10
10
|
"api/openapi.yaml": "39081c59fb696159806b0f2f9a42e7e9ff830d622fcf2ad4159b21357580a955",
|
|
11
11
|
"api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
|
|
12
|
-
"api/seams-v2.yaml": "
|
|
13
|
-
"api/v2/asyncapi.yaml": "
|
|
14
|
-
"api/v2/openapi.yaml": "
|
|
12
|
+
"api/seams-v2.yaml": "90033d2fb8507c2baaee3b666369fcda2c8eb7bb48783899b5e8d819bc6e894c",
|
|
13
|
+
"api/v2/asyncapi.yaml": "0bdab2dd5d818c5320000d101190a394c9e056311855382a7e73bfc2a0a281e1",
|
|
14
|
+
"api/v2/openapi.yaml": "389cf4bc666c01188ef9e24dc957af23b27c64cae114ff1354eb10810a388254",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
|
|
17
17
|
"schemas/a2a-task-state.schema.json": "c9365918f993f943b4b619d42551eb066a1ed33a08d895d51b395432a5b1f1bc",
|
|
@@ -201,13 +201,13 @@
|
|
|
201
201
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
202
202
|
"spec/v1/alias-detectors.json": "40069d5976eeb6ba1384a648e57e5cfd673db3fce36175115fb8293bee9664d4",
|
|
203
203
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
204
|
-
"spec/v1/core-standard-manifest.json": "
|
|
204
|
+
"spec/v1/core-standard-manifest.json": "4bd400c5ceddb7451647bbb9aab58cce5768901c54e74ae08bf5559d5902a248",
|
|
205
205
|
"spec/v1/deprecations.json": "307083ce29c23fd406015951f99a30d78d6187ff061d38dc9732f62191b40f3f",
|
|
206
206
|
"spec/v1/deprecations.schema.json": "18c87e78bedc210431f795ae44c5b5d202f2f3317850d5cf86867d4f1fa1cdfb",
|
|
207
207
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
208
208
|
"spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
|
|
209
209
|
"spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
|
|
210
|
-
"spec/v1/gaps.json": "
|
|
210
|
+
"spec/v1/gaps.json": "08eb9c3663bb1e4f8e5143fc9a46af2b6fd0868582c596bac768af52c2b11249",
|
|
211
211
|
"spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
|
|
212
212
|
"spec/v1/migrations.json": "8839497d6a4830b53fa7867014a8336f0d725ef2346352e54fb580b7947897af",
|
|
213
213
|
"spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
|
|
@@ -222,19 +222,19 @@
|
|
|
222
222
|
"spec/v2/core/form-content-packs.md": "af3517dd7125106088249c0e32220b0b9fc3e9304c10378a6327cc8ad84b6bf1",
|
|
223
223
|
"spec/v2/core/headers.md": "14cdf4ae9ee7d80eebfd426d7c3552e577baea0300915cd4bb3a68e8588195a8",
|
|
224
224
|
"spec/v2/core/idempotency.md": "e4edae1834101fd331379d84de77eaa9cead49383529c31f8bcd18322f67c965",
|
|
225
|
-
"spec/v2/core/identity.md": "
|
|
226
|
-
"spec/v2/core/interop.md": "
|
|
225
|
+
"spec/v2/core/identity.md": "e44f34f7c2db1f12babb19ca8ee1e5b1401a89f38fd5c90d0c4b74c95f6e5d42",
|
|
226
|
+
"spec/v2/core/interop.md": "6bd581556b9ab1a1509c01b9a1ec2bcb9e4a8300e68fb01570704417e70f20b9",
|
|
227
227
|
"spec/v2/core/interrupt.md": "3a926d84b942d4ee7daccc4443c93dc29f6a69f2936ba813182f2c1336db2cbb",
|
|
228
228
|
"spec/v2/core/overview.md": "7dc00ace32d4e4ce929a383651f0029fc4b7091ec87487b1bf26ead1be209e0e",
|
|
229
229
|
"spec/v2/core/packs.md": "cc06de2d49dd08410eececd5c279996ec839680553b332b4f33d6b31989b5757",
|
|
230
230
|
"spec/v2/core/persistence.md": "9e241f84259e38848f4a2ad1c21debb0dffd5f8aafbad26408aa6cc8969bf93b",
|
|
231
231
|
"spec/v2/core/replay.md": "10cc01bf9e4e921fcfac740f3174b2e95cda7ba9a1e13e85cf371c8c2d0fa46a",
|
|
232
|
-
"spec/v2/core/runs.md": "
|
|
233
|
-
"spec/v2/core/security-defaults.md": "
|
|
232
|
+
"spec/v2/core/runs.md": "fe6881ce89d2b494d5458373a01dafa365fc684f4fd2b6f9c541b4839e783238",
|
|
233
|
+
"spec/v2/core/security-defaults.md": "5c32c0bf4b47975c1428361b225a066cd3966cb37b023ca70bc30152fcbec33b",
|
|
234
234
|
"spec/v2/core/versioning.md": "27b88cde88f9060567ef7e46f4897b6be8892ade9f4a46c2ab16e314c515eabd",
|
|
235
235
|
"spec/v2/core/webhooks.md": "46c1311c1897236f9bf9db5025c8af31dd84cd19208da3e5e9ff69eec9436965",
|
|
236
236
|
"spec/v2/core/workflow-chain-packs.md": "df78b76dd79f2267fb6b72c08e0911e5f9d5bb1925c6efdd6deda62fe8a51dc8",
|
|
237
|
-
"spec/v2/declaration.json": "
|
|
237
|
+
"spec/v2/declaration.json": "1cf647422b52e7554e5b30107e2cdb37f876b07f463834fc86f57021230d91d3",
|
|
238
238
|
"spec/v2/declaration.schema.json": "c86e3083fb9789c1958ecb4576cc6f71aa90e6f339521139238543ed08211dd4",
|
|
239
239
|
"spec/v2/errors.json": "aac91b12f954cc90574d310070ae3c651b131055d4389d2c6155242763765195",
|
|
240
240
|
"spec/v2/event-codemap.json": "37869a03cdfd8758b57e6f350641a6ebbd383231cebda51f5473ad85f94ab74c",
|
|
@@ -274,8 +274,8 @@
|
|
|
274
274
|
"spec/v2/path-manifest.json": "c123c9fd77dc1b3f9c2e9346ace80cdae007e6511138894956abda01e61ec1c6",
|
|
275
275
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
276
276
|
"spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
|
|
277
|
-
"spec/v2/release.json": "
|
|
277
|
+
"spec/v2/release.json": "59aa0c9f4b656a56f01d643a7d7ff6cd4669415fb0522e3927881710f71cc0b4",
|
|
278
278
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
|
|
279
279
|
},
|
|
280
|
-
"corpusCommit": "
|
|
280
|
+
"corpusCommit": "4f2b830076863ae5e31b618de1d0bd7c0a757fb0"
|
|
281
281
|
}
|
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.
|
|
4
|
+
version: 2.14.0
|
|
5
5
|
description: 'GENERATED by scripts/derive-v2-api.py. RFC 0168 §C: the seams are a versioned conformance profile with their
|
|
6
6
|
own document and path space (/conformance/seams/…), validated against the canonical v2 schemas with no tolerance path,
|
|
7
7
|
forbidden from the capability namespace (a host advertises the profile, never a testSeams flag). This document carries
|
package/api/v2/asyncapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
asyncapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: OpenWOP v2 event streams
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.14.0
|
|
5
5
|
description: GENERATED by scripts/derive-v2-api.py (RFC 0171 §E.1, RFC 0172 §C.2). One run-events channel whose address
|
|
6
6
|
is the OpenAPI path key; the server pathname is empty (bare origin). streamMode is a pattern over the closed set and its
|
|
7
7
|
comma-separated combinations (`values` never combines). hostEvents has a real address (RFC 0171 §E.1) — the documented
|
package/api/v2/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: OpenWOP v2 API
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.14.0
|
|
5
5
|
summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
|
|
6
6
|
description: GENERATED by scripts/derive-v2-api.py from api/openapi.yaml and the RFC 0167 children (v2 charter Phase 3,
|
|
7
7
|
P3-C). Bare origin, unversioned path keys, negotiation by `OpenWOP-Version` + `protocolVersions[]` (RFC 0172 §A). No seam
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/spec-artifacts",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.14.0",
|
|
4
4
|
"description": "The OpenWOP machine-readable contract: api/ (OpenAPI, AsyncAPI, the seams profile), schemas/ (v1 and v2 JSON Schemas), the spec/v1 and spec/v2 registries (errors, event codemap, declaration, deprecations, migrations, gaps) and CORPUS-STAMP.json — published from the openwop/openwop corpus tag; the peer dependency @openwop/openwop-conformance digest-checks at start (RFC 0168 §D.2).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"provenance": {
|
|
5
5
|
"suite": {
|
|
6
6
|
"package": "@openwop/openwop-conformance",
|
|
7
|
-
"version": "2.
|
|
7
|
+
"version": "2.14.0"
|
|
8
8
|
},
|
|
9
9
|
"note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
|
|
10
10
|
},
|
|
@@ -419,5 +419,5 @@
|
|
|
419
419
|
"$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
|
|
420
420
|
}
|
|
421
421
|
],
|
|
422
|
-
"digest": "
|
|
422
|
+
"digest": "44424b6d7b82589c72ba10baaa51c495ae5940e6f562b86531c87fb63a37549e"
|
|
423
423
|
}
|
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-19",
|
|
5
5
|
"witnessClasses": [
|
|
6
6
|
"witnessable-unaided",
|
|
7
7
|
"witnessable-gated",
|
|
@@ -10348,6 +10348,40 @@
|
|
|
10348
10348
|
}
|
|
10349
10349
|
]
|
|
10350
10350
|
},
|
|
10351
|
+
{
|
|
10352
|
+
"id": "openwop.gap.0189.4",
|
|
10353
|
+
"rfc": "0189",
|
|
10354
|
+
"local": "G4",
|
|
10355
|
+
"section": "§B(c)",
|
|
10356
|
+
"surface": "A markdown TABLE is not one paragraph, but `split(/\\n\\s*\\n/)` treated it as one — so an RFC 2119 keyword ANYWHERE in a table satisfied EVERY family named anywhere in it. Measured: `versioning.md`'s 18-axis disposition table is a single 20-line block; `multiAgent` (row 13) and `schemaVersions` (row 6) were both satisfied by the `MUST` in row 15, which is about `minClientVersion`. Both rows name `events.md` as their owner in their own Owner column, and `events.md` mentions neither family. The gate green-lit both declarations, with the RFC 0191 marker in place — so the marker's \"explicit, local and reviewable\" guarantee was being read against a reference table where the claim is contradicted three rows away. Eleven of the then-57 undeclared families had a table-only match waiting.",
|
|
10357
|
+
"witness": "unclassified",
|
|
10358
|
+
"requirementId": null,
|
|
10359
|
+
"disposition": "closed",
|
|
10360
|
+
"target": null,
|
|
10361
|
+
"sources": [
|
|
10362
|
+
{
|
|
10363
|
+
"file": "RFCS/registers/0189-normative-home.gaps.md",
|
|
10364
|
+
"token": "G4"
|
|
10365
|
+
}
|
|
10366
|
+
]
|
|
10367
|
+
},
|
|
10368
|
+
{
|
|
10369
|
+
"id": "openwop.gap.0189.5",
|
|
10370
|
+
"rfc": "0189",
|
|
10371
|
+
"local": "G5",
|
|
10372
|
+
"section": "§B(b)/(c)",
|
|
10373
|
+
"surface": "`-`, `_`, `.` and `/` are not word boundaries for a family key, but `namesKey` treated every non-alphanumeric as one — so a key was \"named\" by any token merely CONTAINING it. Measured at 2.13.0, six of the twenty families that satisfied §B(c) did so ONLY through this: `fs` ← \"nodes are `fs-gated`\"; `budget` ← `token_budget_exceeded`; `i18n` ← \"see i18n.md\"; `portability` ← the path `spec/v2/ext/portability/`; `workspace` ← `RunSnapshot.owner.workspace`. A further five matched through plain English homonyms (`cache` the verb, `production` the adjective, `content` in `content-free`).",
|
|
10374
|
+
"witness": "unclassified",
|
|
10375
|
+
"requirementId": null,
|
|
10376
|
+
"disposition": "closed",
|
|
10377
|
+
"target": null,
|
|
10378
|
+
"sources": [
|
|
10379
|
+
{
|
|
10380
|
+
"file": "RFCS/registers/0189-normative-home.gaps.md",
|
|
10381
|
+
"token": "G5"
|
|
10382
|
+
}
|
|
10383
|
+
]
|
|
10384
|
+
},
|
|
10351
10385
|
{
|
|
10352
10386
|
"id": "openwop.gap.0190.1",
|
|
10353
10387
|
"rfc": "0190",
|
package/spec/v2/core/identity.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Identity
|
|
2
2
|
|
|
3
3
|
> **Status: Stable · RFC 0170, 0165, 0176.**
|
|
4
|
+
> **Normative home:** `auth`, `authorization`.
|
|
4
5
|
|
|
5
6
|
## Why this exists
|
|
6
7
|
|
|
@@ -42,6 +43,8 @@ An end user reaching the host through an A2A peer is `kind: anonymous`, `lane: a
|
|
|
42
43
|
|
|
43
44
|
Every lane MUST: verify the credential against the lane's trust root; bind the verified identity to the request, never to an asserted header; check audience; resolve to a Subject before any authorization decision; and fail closed. The closed reason vocabulary is the family-wide error set in §6. Every lane is advertised as one member of the `auth.lanes[]` facet (`spec/v2/facets/auth.schema.json`):
|
|
44
45
|
|
|
46
|
+
`authorization.failClosed` advertises that rule and MUST be `true` when present; it does not gate it (invariant `authorization-fail-closed`). `authorization.roles` is the host role catalog: a request is authorized when any role-derived scope matches the required scope, under the same scope-match semantics this document applies to a credential.
|
|
47
|
+
|
|
45
48
|
```json
|
|
46
49
|
{ "lane": "oidc", "issuers": ["https://idp.example"], "revocation": "exp-and-recheck",
|
|
47
50
|
"revocationWindowSeconds": 300, "minimumAssurance": "sender-constrained",
|
package/spec/v2/core/interop.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Interop
|
|
2
2
|
|
|
3
3
|
> **Status: Stable · RFC 0175.**
|
|
4
|
+
> **Normative home:** `a2a`, `mcp`.
|
|
4
5
|
|
|
5
6
|
## Why this exists
|
|
6
7
|
|
|
@@ -12,7 +13,7 @@ REST and SSE are the wire. A host MUST NOT advertise a transport list; `supporte
|
|
|
12
13
|
|
|
13
14
|
## The facets
|
|
14
15
|
|
|
15
|
-
A host that speaks either protocol MUST advertise the corresponding facet with every required field (`spec/v2/facets/a2a.schema.json`, `spec/v2/facets/mcp.schema.json`).
|
|
16
|
+
A host that speaks either protocol MUST advertise the corresponding facet — `a2a` or `mcp` — with every required field (`spec/v2/facets/a2a.schema.json`, `spec/v2/facets/mcp.schema.json`).
|
|
16
17
|
|
|
17
18
|
| Facet field | A2A (`a2a`) | MCP (`mcp`) | Rule |
|
|
18
19
|
| --- | --- | --- | --- |
|
package/spec/v2/core/runs.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Security Defaults
|
|
2
2
|
|
|
3
3
|
> **Status: Stable · RFC 0173 (§A–§E), 0164 §22, 0170 §B.**
|
|
4
|
+
> **Normative home:** `sandbox`, `compensation`.
|
|
4
5
|
|
|
5
6
|
## Why this exists
|
|
6
7
|
|
|
@@ -45,10 +46,14 @@ A host that surfaces `approversList`, or advertises `refKinds` including `group`
|
|
|
45
46
|
|
|
46
47
|
A host that executes third-party packs MUST enforce the eight `node-pack-sandbox-*` invariants of `SECURITY/invariants.yaml` (`no-process`, `network-gated`, `fs-gated`, `no-env`, `timeout`, `memory-cap`, `isolated-context`, `no-eval`) and MUST advertise `sandbox.isolationModel ∈ wasm | process | container | vm` (`spec/v2/facets/sandbox.schema.json`). `node:vm` is not a value. A host that cannot isolate MUST NOT execute third-party packs; it MAY register and validate them. The `no-eval` row stays reference-impl in `ext/sandbox-runtime-notes` (§D.1). The `pack-isolation` scenario drives the eight legs.
|
|
47
48
|
|
|
49
|
+
The remaining `sandbox` facets name the bound each invariant already carries: `allowedHostCalls` is the host-call allowlist `network-gated` and `fs-gated` enforce, `memoryLimitBytes` is the ceiling of `memory-cap`, and `wallClockLimitMs` is the ceiling of `timeout`. An advertised bound MUST be enforced; none of the three gates the invariant, which binds whether or not the facet is advertised.
|
|
50
|
+
|
|
48
51
|
### Compensation
|
|
49
52
|
|
|
50
53
|
A host that advertises `compensation` MUST serve `GET /runs/{runId}/compensation` (`schemas/v2/compensation-projection.schema.json`): `{ runId, status, plan[], attempts[] }`, the plan carrying `{ nodeId, order, policy?, irreversibleEffect? }` and each attempt `{ nodeId, attempt, outcome, at, reason? }`, keyed on the node and attempt the operator family uses. The trichotomy of §D.1 resolves to core obligation with a declared witness; a host that does not advertise `compensation` has no obligation.
|
|
51
54
|
|
|
55
|
+
The facets bind the policy shape (`schemas/v2/compensation-policy.schema.json`): `compensation.orderingModels` MUST list `reverse-completion` and MAY add `dependency-graph`, and a policy naming a model outside it MUST be refused at registration; `compensation.profileVersion` participates in the inverse-action identity, so a policy naming a different one MUST be refused; `compensation.manualIntervention` is the `manual` status above — a host advertising it records the unwind rather than abandoning it.
|
|
56
|
+
|
|
52
57
|
### Layer-2 effect identity
|
|
53
58
|
|
|
54
59
|
A host that advertises `idempotency` MUST assign a logical effect id once per effect, stable across transport retries, and MUST inject it as the provider's idempotency key (RFC 0150 §B). Where a provider exposes no business key, the v1 activity recipe is the documented fallback. `GET /runs/{runId}/effects` (`schemas/v2/effect-ledger-projection.schema.json`) serves `{ runId, effects[] }`, each `{ effectId, nodeId, attempt, invocationId?, keying: business-identity | activity-recipe, providerKey?, state: claimed | completed | released | escaped, at }`, content-free of provider payloads. Layer-2 retention MUST be at least 14 days (RFC 0170 §D.3). No deployed history holds a v1 recipe key, so no dual-read migration exists (RFC 0147 UQ2).
|
package/spec/v2/declaration.json
CHANGED
|
@@ -188,6 +188,7 @@
|
|
|
188
188
|
{
|
|
189
189
|
"key": "schemaVersions",
|
|
190
190
|
"kind": "family",
|
|
191
|
+
"normativeText": ["spec/v1/capabilities.md"],
|
|
191
192
|
"anchor": "core",
|
|
192
193
|
"section": "core/capabilities.md#schemaVersions",
|
|
193
194
|
"peerDependencyId": "schemaVersions",
|
|
@@ -534,6 +535,7 @@
|
|
|
534
535
|
{
|
|
535
536
|
"key": "authorization",
|
|
536
537
|
"kind": "family",
|
|
538
|
+
"normativeText": ["spec/v2/core/identity.md"],
|
|
537
539
|
"anchor": "core",
|
|
538
540
|
"section": "core/capabilities.md#authorization",
|
|
539
541
|
"peerDependencyId": "authorization",
|
|
@@ -603,6 +605,7 @@
|
|
|
603
605
|
{
|
|
604
606
|
"key": "multiAgent",
|
|
605
607
|
"kind": "family",
|
|
608
|
+
"normativeText": ["spec/v1/multi-agent-execution.md"],
|
|
606
609
|
"anchor": "core",
|
|
607
610
|
"section": "core/capabilities.md#multiAgent",
|
|
608
611
|
"peerDependencyId": "multiAgent",
|
|
@@ -1141,6 +1144,7 @@
|
|
|
1141
1144
|
{
|
|
1142
1145
|
"key": "a2a",
|
|
1143
1146
|
"kind": "family",
|
|
1147
|
+
"normativeText": ["spec/v2/core/interop.md"],
|
|
1144
1148
|
"anchor": "core",
|
|
1145
1149
|
"section": "core/capabilities.md#a2a",
|
|
1146
1150
|
"peerDependencyId": "a2a",
|
|
@@ -1406,6 +1410,7 @@
|
|
|
1406
1410
|
{
|
|
1407
1411
|
"key": "mcp",
|
|
1408
1412
|
"kind": "family",
|
|
1413
|
+
"normativeText": ["spec/v2/core/interop.md"],
|
|
1409
1414
|
"anchor": "core",
|
|
1410
1415
|
"section": "core/capabilities.md#mcp",
|
|
1411
1416
|
"peerDependencyId": "mcp",
|
|
@@ -1433,6 +1438,7 @@
|
|
|
1433
1438
|
{
|
|
1434
1439
|
"key": "sandbox",
|
|
1435
1440
|
"kind": "family",
|
|
1441
|
+
"normativeText": ["spec/v2/core/security-defaults.md"],
|
|
1436
1442
|
"anchor": "core",
|
|
1437
1443
|
"section": "core/capabilities.md#sandbox",
|
|
1438
1444
|
"peerDependencyId": "sandbox",
|
|
@@ -1457,6 +1463,7 @@
|
|
|
1457
1463
|
{
|
|
1458
1464
|
"key": "compensation",
|
|
1459
1465
|
"kind": "family",
|
|
1466
|
+
"normativeText": ["spec/v2/core/security-defaults.md"],
|
|
1460
1467
|
"anchor": "core",
|
|
1461
1468
|
"section": "core/capabilities.md#compensation",
|
|
1462
1469
|
"peerDependencyId": "compensation",
|
|
@@ -1542,6 +1549,7 @@
|
|
|
1542
1549
|
{
|
|
1543
1550
|
"key": "auth",
|
|
1544
1551
|
"kind": "family",
|
|
1552
|
+
"normativeText": ["spec/v2/core/identity.md"],
|
|
1545
1553
|
"anchor": "core",
|
|
1546
1554
|
"section": "core/capabilities.md#auth",
|
|
1547
1555
|
"peerDependencyId": "auth",
|
|
@@ -1621,6 +1629,7 @@
|
|
|
1621
1629
|
{
|
|
1622
1630
|
"key": "runList",
|
|
1623
1631
|
"kind": "family",
|
|
1632
|
+
"normativeText": ["spec/v2/core/runs.md"],
|
|
1624
1633
|
"anchor": "core",
|
|
1625
1634
|
"section": "core/capabilities.md#runList",
|
|
1626
1635
|
"peerDependencyId": "runList",
|
package/spec/v2/release.json
CHANGED
|
@@ -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.
|
|
4
|
-
"corpusTag": "v2.
|
|
3
|
+
"version": "2.14.0",
|
|
4
|
+
"corpusTag": "v2.14.0",
|
|
5
5
|
"updated": "2026-09-18"
|
|
6
6
|
}
|