@openwop/spec-artifacts 2.0.11 → 2.1.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 +34 -32
- package/api/seams-v2.yaml +1 -1
- package/api/v2/asyncapi.yaml +1 -1
- package/api/v2/openapi.yaml +66 -1
- package/package.json +2 -2
- package/schemas/v2/capabilities.schema.json +90 -1
- package/schemas/v2/run-list-response.schema.json +24 -0
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v2/README.md +1 -1
- package/spec/v2/core/capabilities.md +6 -2
- package/spec/v2/core/conformance.md +1 -1
- package/spec/v2/core/connection-packs.md +1 -1
- package/spec/v2/core/errors.md +1 -1
- package/spec/v2/core/events.md +1 -1
- package/spec/v2/core/form-content-packs.md +1 -1
- package/spec/v2/core/headers.md +3 -3
- package/spec/v2/core/idempotency.md +1 -1
- package/spec/v2/core/identity.md +2 -2
- package/spec/v2/core/interop.md +1 -1
- package/spec/v2/core/interrupt.md +1 -1
- package/spec/v2/core/overview.md +1 -1
- package/spec/v2/core/packs.md +1 -1
- package/spec/v2/core/persistence.md +1 -1
- package/spec/v2/core/replay.md +1 -1
- package/spec/v2/core/runs.md +6 -1
- package/spec/v2/core/security-defaults.md +1 -1
- package/spec/v2/core/versioning.md +4 -4
- package/spec/v2/core/webhooks.md +1 -1
- package/spec/v2/core/workflow-chain-packs.md +1 -1
- package/spec/v2/declaration.json +33 -1
- package/spec/v2/facets/runList.schema.json +24 -0
- package/spec/v2/path-manifest.json +6 -1
- 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.0
|
|
5
|
-
"corpusTag": "v2.0
|
|
4
|
+
"version": "2.1.0",
|
|
5
|
+
"corpusTag": "v2.1.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": "bf40af2260e55099ac68020a51f6d931ebca05f3bf385bc76cf57ad1d65d50a8",
|
|
13
|
+
"api/v2/asyncapi.yaml": "26a4a9a3a1f3ecf3a7e6e559941872877461b6677f2b0e0bb187332aec56d069",
|
|
14
|
+
"api/v2/openapi.yaml": "ec983d886bf26e1fc2f52ff456ce44e145b601ac1420e8a490bcee7a23fcdd0f",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
|
|
17
17
|
"schemas/a2a-task-state.schema.json": "c9365918f993f943b4b619d42551eb066a1ed33a08d895d51b395432a5b1f1bc",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"schemas/v2/artifact-type-pack-manifest.schema.json": "85630d1b760d0b41cf5a6fad2acfada39abaf7f0befd95cc4334e1e883e9615d",
|
|
116
116
|
"schemas/v2/audit-verify-result.schema.json": "a748dfadb5155adfde8a91045e76b0db6695005fe559035d71670fdd55edb3ba",
|
|
117
117
|
"schemas/v2/budget-policy.schema.json": "c7449daeb6e1d95e7a047b8c2814d3d54748697c27046972834874867d9b5f4c",
|
|
118
|
-
"schemas/v2/capabilities.schema.json": "
|
|
118
|
+
"schemas/v2/capabilities.schema.json": "7b9c3853c4792f8242babfd70d6336a2ec365d4702944701e833ee5d45445ff5",
|
|
119
119
|
"schemas/v2/certification-bundle.schema.json": "d2cbc5cadddff13630a528dc9673162f582c035c6a6663ca02c1ac53e8fec40c",
|
|
120
120
|
"schemas/v2/channel-presence-payload.schema.json": "9475d46f358d21c19126e78204987a5633979917a2293653354ef5c5e044d54e",
|
|
121
121
|
"schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
|
|
@@ -171,6 +171,7 @@
|
|
|
171
171
|
"schemas/v2/run-diff-response.schema.json": "8bdb2045c274580038bd74781f7d062f5049839797c164a89de4ed89edc53a74",
|
|
172
172
|
"schemas/v2/run-event-payloads.schema.json": "1d3ccffc4e506d3109c17990e01976ba935e61672562684b9635743d56af3f57",
|
|
173
173
|
"schemas/v2/run-event.schema.json": "1a9946374af9323b71635d00fed22abe02c300fa2cf3ae3e9c30f3e553e408ec",
|
|
174
|
+
"schemas/v2/run-list-response.schema.json": "c2dbc34768dcf64528914a213aa3cb55952e8e3e90a64b04a9423b2a19749d38",
|
|
174
175
|
"schemas/v2/run-options.schema.json": "f0e9f494d80086c2ed2cf9fe87df54e5b4e66601699c4a1089f4edbc7ba58867",
|
|
175
176
|
"schemas/v2/run-orchestrator-decided-event.schema.json": "bb76e15ff72e669f12938684033b55dc567470e1a378e19ffc3fa0e4034ab5a7",
|
|
176
177
|
"schemas/v2/run-snapshot.schema.json": "65a3c82220da2e1a54324665d517dc0e627225f3d37ef75b43bef3fb7e3bac0e",
|
|
@@ -199,7 +200,7 @@
|
|
|
199
200
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
200
201
|
"spec/v1/alias-detectors.json": "fee4594ef49953953ffcd0b3813300067d16b3e65ebff2aac722034ac9b3f545",
|
|
201
202
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
202
|
-
"spec/v1/core-standard-manifest.json": "
|
|
203
|
+
"spec/v1/core-standard-manifest.json": "2e1962fac9303bf8c6e8c74998312548f09383a0a83043743894de360775809c",
|
|
203
204
|
"spec/v1/deprecations.json": "1d5acb69a9b8ccb57275a95605f74aef1d920685f8407c9d382a46b59dc803bb",
|
|
204
205
|
"spec/v1/deprecations.schema.json": "18c87e78bedc210431f795ae44c5b5d202f2f3317850d5cf86867d4f1fa1cdfb",
|
|
205
206
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
@@ -211,28 +212,28 @@
|
|
|
211
212
|
"spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
|
|
212
213
|
"spec/v1/operation-path-manifest.json": "5f5f4e3842669371730ebbd1aace3fb794192615f0018dc144f484ba5db82ac3",
|
|
213
214
|
"spec/v1/spec-gaps.json": "6cc9962c6b969f632e07a78b52a4f61447ff579e2990cbae989866f584a86042",
|
|
214
|
-
"spec/v2/README.md": "
|
|
215
|
-
"spec/v2/core/capabilities.md": "
|
|
216
|
-
"spec/v2/core/conformance.md": "
|
|
217
|
-
"spec/v2/core/connection-packs.md": "
|
|
218
|
-
"spec/v2/core/errors.md": "
|
|
219
|
-
"spec/v2/core/events.md": "
|
|
220
|
-
"spec/v2/core/form-content-packs.md": "
|
|
221
|
-
"spec/v2/core/headers.md": "
|
|
222
|
-
"spec/v2/core/idempotency.md": "
|
|
223
|
-
"spec/v2/core/identity.md": "
|
|
224
|
-
"spec/v2/core/interop.md": "
|
|
225
|
-
"spec/v2/core/interrupt.md": "
|
|
226
|
-
"spec/v2/core/overview.md": "
|
|
227
|
-
"spec/v2/core/packs.md": "
|
|
228
|
-
"spec/v2/core/persistence.md": "
|
|
229
|
-
"spec/v2/core/replay.md": "
|
|
230
|
-
"spec/v2/core/runs.md": "
|
|
231
|
-
"spec/v2/core/security-defaults.md": "
|
|
232
|
-
"spec/v2/core/versioning.md": "
|
|
233
|
-
"spec/v2/core/webhooks.md": "
|
|
234
|
-
"spec/v2/core/workflow-chain-packs.md": "
|
|
235
|
-
"spec/v2/declaration.json": "
|
|
215
|
+
"spec/v2/README.md": "7ae852012806ffaab24a5586e5eac107f0bc7b4932f278a93e4b549fcbba56ee",
|
|
216
|
+
"spec/v2/core/capabilities.md": "c5107a4964e487c20bbb5254cfe1f706e0d9ba7e34da9070bc43b50b385e7948",
|
|
217
|
+
"spec/v2/core/conformance.md": "622084e3c74c4549087f4d861b1bb98cec201a0c5aec23788d27f53a355fde3b",
|
|
218
|
+
"spec/v2/core/connection-packs.md": "1d759681e2962f5103228c52c45f24607ed4bb9ae73e30605f690c1d5a59e9ee",
|
|
219
|
+
"spec/v2/core/errors.md": "74fdb5862f432a831cf0c2eadbe0c8cca6b2660ec578180ae33db54773a1df28",
|
|
220
|
+
"spec/v2/core/events.md": "defe0969d6ec7c980f415cc0d78b9d065782ac7e5638b12a44aa4895a35d6126",
|
|
221
|
+
"spec/v2/core/form-content-packs.md": "6ffaae85d4550be48dd53fb6e2959af8aceb35bd87c5343b722885084f197713",
|
|
222
|
+
"spec/v2/core/headers.md": "9e307d2c6ce8a2f91802a753adfd245fd3d10cdc9135e021e76f461f92b866fb",
|
|
223
|
+
"spec/v2/core/idempotency.md": "b86c352d964aebad532727f314e26ed2177d49de382076fa64d3162e2f56118d",
|
|
224
|
+
"spec/v2/core/identity.md": "dd5299f9cdf54640870e1fffae11edb820cf6396ea298c4ebd14c649c4bd4a87",
|
|
225
|
+
"spec/v2/core/interop.md": "d4c404e469e1d9d9be88bc2c939d777e7d7c1d0419b1251c18770f039838a401",
|
|
226
|
+
"spec/v2/core/interrupt.md": "d872e0652a938594eeb2a19e86cf64e64e29b234f5d9c4fbe2970ab5fb191b9c",
|
|
227
|
+
"spec/v2/core/overview.md": "69377c90bbb87b6bfe4b8be4f1b65810094b0759c8d4f93ca6df92cc530ea023",
|
|
228
|
+
"spec/v2/core/packs.md": "e72a7586a61630cdfd342eaf84e989f864b3e199006f5511ef59ea7c1a1c56f7",
|
|
229
|
+
"spec/v2/core/persistence.md": "2373c2815b25b7b4fe29dfdf3783d3f2f3e637d3abce5085e69f019546302fb6",
|
|
230
|
+
"spec/v2/core/replay.md": "bd191a2565aa7ad0df9b35a0716f3de53be34b8722f1807c5e5b02859404a9b9",
|
|
231
|
+
"spec/v2/core/runs.md": "f7a95fc82fda5b7c0c613de6e5edd376bbd6d8ba4c665a500c94eacbe42b86f2",
|
|
232
|
+
"spec/v2/core/security-defaults.md": "1d38aa03b9d2507f1d4a985333cc57ae7892cecc7356f6342fbd1672e34f638a",
|
|
233
|
+
"spec/v2/core/versioning.md": "d731782eeabb953919c7c7057340b7f9c2916b6186790e6b04c7d8ea60767189",
|
|
234
|
+
"spec/v2/core/webhooks.md": "d360da78336afa837bddf515e289e445808bca02e1e4b493f81fa51ce4a545c4",
|
|
235
|
+
"spec/v2/core/workflow-chain-packs.md": "ef2b07d2d99334eaec0cc370314e2ad2f84ea58deb699e5d92e6e52d6056613f",
|
|
236
|
+
"spec/v2/declaration.json": "63dd351a87439241bc744ce62fdc498b7621292c11a4ad42c3f41429d72366b9",
|
|
236
237
|
"spec/v2/declaration.schema.json": "eac5f8080bd572f147bd57d0c4ac8ad73b14536d9236222490ae29a33b21e184",
|
|
237
238
|
"spec/v2/errors.json": "f179414a92f30b5dadf26e9e57699649a67324bd7186d5287647d17605d137d3",
|
|
238
239
|
"spec/v2/event-codemap.json": "37869a03cdfd8758b57e6f350641a6ebbd383231cebda51f5473ad85f94ab74c",
|
|
@@ -262,14 +263,15 @@
|
|
|
262
263
|
"spec/v2/facets/interrupt.schema.json": "c76c58c0abd99de619f8c8afad246568f5bc9cce3b7a0d097d16d87eba84be3a",
|
|
263
264
|
"spec/v2/facets/mcp.schema.json": "f56609fe24ba6160ad29ae31aa16043354ff005e5cb6a0f3871c4d226087cc08",
|
|
264
265
|
"spec/v2/facets/replay.schema.json": "0a5aefb0108c708c6794fadd533cf256709704c4f16dbf44cd63fa8980c78018",
|
|
266
|
+
"spec/v2/facets/runList.schema.json": "6223e1baaebbb9f4faa71bfe968f8d22b4aa88046d0e43e8d5f56409e7f86e90",
|
|
265
267
|
"spec/v2/facets/sandbox.schema.json": "e75f54486d387b2d089791aa93b5093cd1450f1920753a0f97fc23acdfe978ed",
|
|
266
268
|
"spec/v2/facets/webhooks.schema.json": "0b766033ef4b4c6c2ac6f9979a19843ba024d3a1d1576972dcb55aaba52f1b9a",
|
|
267
269
|
"spec/v2/id-field-bindings.json": "d9d1f8e266660b581f11020b9511a65c677e026b1a71ada870682ad77e18555d",
|
|
268
|
-
"spec/v2/path-manifest.json": "
|
|
270
|
+
"spec/v2/path-manifest.json": "a6f4e652e866889e8bde815874062f62929aee95dc8e58e7152c56adee262163",
|
|
269
271
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
270
272
|
"spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
|
|
271
|
-
"spec/v2/release.json": "
|
|
273
|
+
"spec/v2/release.json": "4eea9fc280f05634fe3d5343252ce511267e61a981c30aac3d9491963f06ab18",
|
|
272
274
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
|
|
273
275
|
},
|
|
274
|
-
"corpusCommit": "
|
|
276
|
+
"corpusCommit": "1486657cb7efe8d010cfeec54498aa547e97a981"
|
|
275
277
|
}
|
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.0
|
|
4
|
+
version: 2.1.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.0
|
|
4
|
+
version: 2.1.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.0
|
|
4
|
+
version: 2.1.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
|
|
@@ -339,6 +339,71 @@ paths:
|
|
|
339
339
|
$ref: '#/components/schemas/RunClaimConflict'
|
|
340
340
|
'429':
|
|
341
341
|
$ref: '#/components/responses/RateLimited'
|
|
342
|
+
get:
|
|
343
|
+
tags:
|
|
344
|
+
- Runs
|
|
345
|
+
operationId: listRuns
|
|
346
|
+
summary: The caller's runs, newest first, cursor-paginated (RFC 0182)
|
|
347
|
+
description: 'Tenant-scoped by construction: only runs whose tenant segment is the caller''s, every runId bound (identity.md
|
|
348
|
+
§5). Gated on the `runList` family — 404 not_found when unadvertised. `limit` is honoured up to `runList.maxPageSize`;
|
|
349
|
+
`cursor` is opaque and a cursor the host did not mint is 400 validation_error; `workflowId` and `status` are exact-match
|
|
350
|
+
filters when `runList.filters` names them (an unadvertised filter is ignored).'
|
|
351
|
+
parameters:
|
|
352
|
+
- name: limit
|
|
353
|
+
in: query
|
|
354
|
+
required: false
|
|
355
|
+
schema:
|
|
356
|
+
type: integer
|
|
357
|
+
minimum: 1
|
|
358
|
+
description: Page size; clamped to runList.maxPageSize.
|
|
359
|
+
- name: cursor
|
|
360
|
+
in: query
|
|
361
|
+
required: false
|
|
362
|
+
schema:
|
|
363
|
+
type: string
|
|
364
|
+
minLength: 1
|
|
365
|
+
maxLength: 2048
|
|
366
|
+
description: Opaque cursor from a previous page's nextCursor.
|
|
367
|
+
- name: workflowId
|
|
368
|
+
in: query
|
|
369
|
+
required: false
|
|
370
|
+
schema:
|
|
371
|
+
$ref: ../../schemas/v2/ids.schema.json#/$defs/workflowId
|
|
372
|
+
description: Exact-match filter (when advertised in runList.filters).
|
|
373
|
+
- name: status
|
|
374
|
+
in: query
|
|
375
|
+
required: false
|
|
376
|
+
schema:
|
|
377
|
+
type: string
|
|
378
|
+
enum:
|
|
379
|
+
- pending
|
|
380
|
+
- running
|
|
381
|
+
- paused
|
|
382
|
+
- waiting-approval
|
|
383
|
+
- waiting-input
|
|
384
|
+
- waiting-external
|
|
385
|
+
- completed
|
|
386
|
+
- failed
|
|
387
|
+
- cancelling
|
|
388
|
+
- cancelled
|
|
389
|
+
description: Exact-match filter (when advertised in runList.filters).
|
|
390
|
+
- $ref: '#/components/parameters/OpenWOPVersion'
|
|
391
|
+
responses:
|
|
392
|
+
'200':
|
|
393
|
+
description: One page of the caller's runs.
|
|
394
|
+
content:
|
|
395
|
+
application/json:
|
|
396
|
+
schema:
|
|
397
|
+
$ref: ../../schemas/v2/run-list-response.schema.json
|
|
398
|
+
headers:
|
|
399
|
+
OpenWOP-Version:
|
|
400
|
+
$ref: '#/components/headers/OpenWOPVersion'
|
|
401
|
+
'400':
|
|
402
|
+
$ref: '#/components/responses/ValidationError'
|
|
403
|
+
'401':
|
|
404
|
+
$ref: '#/components/responses/Unauthenticated'
|
|
405
|
+
'404':
|
|
406
|
+
$ref: '#/components/responses/NotFound'
|
|
342
407
|
/runs/{runId}:
|
|
343
408
|
get:
|
|
344
409
|
tags:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/spec-artifacts",
|
|
3
|
-
"version": "2.0
|
|
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
|
|
3
|
+
"version": "2.1.0",
|
|
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": {
|
|
7
7
|
"type": "git",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"description": "A vendor/host extension record; its shape is the org's, declared as open on purpose (RFC 0169 §A.4)."
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
|
-
"description": "RFC 0169 §A.4 — one key for every vendor/host extension, <org>.<name>; reserved orgs: openwop, vendor."
|
|
38
|
+
"description": "RFC 0169 §A.4 — one key for every vendor/host extension, <org>.<name>; reserved orgs: openwop, vendor, effect-seams, events."
|
|
39
39
|
},
|
|
40
40
|
"implementation": {
|
|
41
41
|
"type": "object",
|
|
@@ -7612,6 +7612,95 @@
|
|
|
7612
7612
|
"description": "core/capabilities.md#portability — witness: witnessable-gated; maturity experimental/none; RFC 0098",
|
|
7613
7613
|
"x-openwop-seeded-from": "v1"
|
|
7614
7614
|
},
|
|
7615
|
+
"runList": {
|
|
7616
|
+
"type": "object",
|
|
7617
|
+
"additionalProperties": false,
|
|
7618
|
+
"required": [
|
|
7619
|
+
"status",
|
|
7620
|
+
"since",
|
|
7621
|
+
"witness",
|
|
7622
|
+
"maxPageSize"
|
|
7623
|
+
],
|
|
7624
|
+
"properties": {
|
|
7625
|
+
"status": {
|
|
7626
|
+
"enum": [
|
|
7627
|
+
"stable",
|
|
7628
|
+
"experimental",
|
|
7629
|
+
"deprecated"
|
|
7630
|
+
]
|
|
7631
|
+
},
|
|
7632
|
+
"since": {
|
|
7633
|
+
"type": "string",
|
|
7634
|
+
"pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"
|
|
7635
|
+
},
|
|
7636
|
+
"until": {
|
|
7637
|
+
"type": "string",
|
|
7638
|
+
"pattern": "^((0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)|\\d{4}-\\d{2}-\\d{2})$"
|
|
7639
|
+
},
|
|
7640
|
+
"witness": {
|
|
7641
|
+
"enum": [
|
|
7642
|
+
"witnessable-unaided",
|
|
7643
|
+
"witnessable-gated",
|
|
7644
|
+
"seam-gated",
|
|
7645
|
+
"claims-check",
|
|
7646
|
+
"negative-existence"
|
|
7647
|
+
]
|
|
7648
|
+
},
|
|
7649
|
+
"maxPageSize": {
|
|
7650
|
+
"type": "integer",
|
|
7651
|
+
"minimum": 1,
|
|
7652
|
+
"maximum": 1000
|
|
7653
|
+
},
|
|
7654
|
+
"filters": {
|
|
7655
|
+
"type": "array",
|
|
7656
|
+
"uniqueItems": true,
|
|
7657
|
+
"items": {
|
|
7658
|
+
"type": "string",
|
|
7659
|
+
"enum": [
|
|
7660
|
+
"workflowId",
|
|
7661
|
+
"status"
|
|
7662
|
+
]
|
|
7663
|
+
}
|
|
7664
|
+
}
|
|
7665
|
+
},
|
|
7666
|
+
"allOf": [
|
|
7667
|
+
{
|
|
7668
|
+
"if": {
|
|
7669
|
+
"properties": {
|
|
7670
|
+
"status": {
|
|
7671
|
+
"const": "stable"
|
|
7672
|
+
}
|
|
7673
|
+
}
|
|
7674
|
+
},
|
|
7675
|
+
"then": {
|
|
7676
|
+
"not": {
|
|
7677
|
+
"required": [
|
|
7678
|
+
"until"
|
|
7679
|
+
]
|
|
7680
|
+
}
|
|
7681
|
+
}
|
|
7682
|
+
},
|
|
7683
|
+
{
|
|
7684
|
+
"if": {
|
|
7685
|
+
"properties": {
|
|
7686
|
+
"status": {
|
|
7687
|
+
"enum": [
|
|
7688
|
+
"experimental",
|
|
7689
|
+
"deprecated"
|
|
7690
|
+
]
|
|
7691
|
+
}
|
|
7692
|
+
}
|
|
7693
|
+
},
|
|
7694
|
+
"then": {
|
|
7695
|
+
"required": [
|
|
7696
|
+
"until"
|
|
7697
|
+
]
|
|
7698
|
+
}
|
|
7699
|
+
}
|
|
7700
|
+
],
|
|
7701
|
+
"description": "core/capabilities.md#runList — witness: witnessable-gated; maturity experimental/none; RFC 0182",
|
|
7702
|
+
"x-openwop-facets-from": "spec/v2/facets/runList.schema.json"
|
|
7703
|
+
},
|
|
7615
7704
|
"interrupt": {
|
|
7616
7705
|
"type": "object",
|
|
7617
7706
|
"additionalProperties": false,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openwop.dev/spec/v2/run-list-response.schema.json",
|
|
4
|
+
"title": "RunListResponse",
|
|
5
|
+
"description": "RFC 0182. Response body for `GET /runs` (`listRuns`): one page of the caller's runs as full `RunSnapshot`s, newest first by default, with an opaque cursor for the next page when there is one. Every `runId` is tenant-bound (identity.md §5); a host MUST NOT return more rows than its advertised `runList.maxPageSize`.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["runs"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"runs": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"description": "The page. Empty when the caller has no runs matching the filters.",
|
|
13
|
+
"items": {
|
|
14
|
+
"$ref": "run-snapshot.schema.json"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"nextCursor": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"minLength": 1,
|
|
20
|
+
"maxLength": 2048,
|
|
21
|
+
"description": "Opaque host-minted cursor for the next page. Absent on the last page. A host MUST refuse a cursor it did not mint with 400 validation_error."
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"provenance": {
|
|
5
5
|
"suite": {
|
|
6
6
|
"package": "@openwop/openwop-conformance",
|
|
7
|
-
"version": "2.0
|
|
7
|
+
"version": "2.1.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": "8727f890d02f380569cabf77782cee88948f5bdd754c22877fef73d00c2be725"
|
|
423
423
|
}
|
package/spec/v2/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `spec/v2/` — the OpenWOP v2 tree (the current protocol major)
|
|
2
2
|
|
|
3
|
-
> **Status: released.** v2 is the current protocol major — `v2.0.0` was tagged 2026-09-05 and this tree is at corpus `v2.0
|
|
3
|
+
> **Status: released.** v2 is the current protocol major — `v2.0.0` was tagged 2026-09-05 and this tree is at corpus `v2.1.0` (`release.json`). Everything under `spec/v2/`, `schemas/v2/` and `api/v2/` is normative, is vendored into `@openwop/spec-artifacts`, and is what `@openwop/openwop-conformance` 2.x measures. A new integration targets v2.
|
|
4
4
|
>
|
|
5
5
|
> **v1 is not retired.** Through the overlap a host advertises both majors and `preferredVersion` MUST remain a `1.x` member (`core/versioning.md` §1.1); v1 clients keep working unchanged on `/v1/…`. v1 end-of-support is the later of two clocks in `core/overview.md`, earliest 2026-12-04, and until then `spec/v1/` stays the maintained parallel track. A `1.x` conformance tarball still excludes this tree (`conformance/scripts/pack-vendor.sh`).
|
|
6
6
|
>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Discovery and Capabilities
|
|
2
2
|
|
|
3
|
-
> **Status: Stable · v2.0
|
|
3
|
+
> **Status: Stable · v2.1.0 (2026-09-11) · RFC 0169, 0176, 0179.**
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
@@ -265,7 +265,7 @@ Witness `witnessable-gated`; owner RFC 0083.
|
|
|
265
265
|
|
|
266
266
|
Witness `seam-gated`; owner RFC 0152; facets `versions`, `preferredVersion`, `minimumVersion`, `refreshedAt`, `profiles`, `agentCardUrl`, `streaming`, `pushNotifications`, `durableTasks`.
|
|
267
267
|
|
|
268
|
-
**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
|
|
268
|
+
**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: the advertiser knows where the card is, not that the named origin serves `/.well-known/openwop` or speaks any major; the suite exercises the advertiser only, and certification is per origin. 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
269
|
|
|
270
270
|
### § budget
|
|
271
271
|
|
|
@@ -361,6 +361,10 @@ Witness `witnessable-gated`; owner RFC 0098.
|
|
|
361
361
|
|
|
362
362
|
Witness `witnessable-gated`; owner RFC 0104; facets `refKinds`, `tokenAlgs`.
|
|
363
363
|
|
|
364
|
+
### § runList
|
|
365
|
+
|
|
366
|
+
Witness `witnessable-gated`; owner RFC 0182; facets `maxPageSize`, `filters` (runs.md §List).
|
|
367
|
+
|
|
364
368
|
## 6. Extension families (13)
|
|
365
369
|
|
|
366
370
|
Rows with `anchor: ext` are documented under `spec/v2/ext/<key>/` and each document MUST declare `witness` and both maturity axes in its header (`overview.md`): `restTransport`, `a2uiSurface`, `brand`, `canvas`, `chat`, `coordination`, `dataIntegration`, `entities`, `kanban`, `knowledge`, `launchStudio`, `messaging`, `webResearch`. `restTransport` and `a2uiSurface` (`witness: claims-check`) stay in `ext/` unless a behavioral witness lands (RFC 0169 §C.5); the other 11 are the RFC 0144 extension-class families advertised as `extensions.openwop-app.<name>` (§3.2).
|
package/spec/v2/core/errors.md
CHANGED
package/spec/v2/core/events.md
CHANGED
package/spec/v2/core/headers.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Headers
|
|
2
2
|
|
|
3
|
-
> **Status: Stable · v2.0
|
|
3
|
+
> **Status: Stable · v2.1.0 (2026-09-11) · RFC 0171 §C.1, RFC 0172 §A.3–§A.4.** GENERATED by `scripts/derive-v2-api.py` from `api/v2/openapi.yaml`; do not edit.
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ RFC 0171 §C.1: every non-standard header is `OpenWOP-<Name>` and every header i
|
|
|
16
16
|
| `Last-Event-ID` | 1 | Resume from sequence after this ID. |
|
|
17
17
|
| `OpenWOP-Dedup` | 1 | When set, server cross-host claim system rejects duplicate `(tenantId, scopeId)` pairs with `409 Conflict`. |
|
|
18
18
|
| `OpenWOP-Force-Engine-Version` | 1 | **Test-keys-only.** When set, the server emits events for this run AS IF it |
|
|
19
|
-
| `OpenWOP-Version` |
|
|
19
|
+
| `OpenWOP-Version` | 52 | RFC 0172 §A.3 — selects a listed major.minor; absent ⇒ the host's `preferredVersion`; unlisted ⇒ 406 protocol_version_unsupported. |
|
|
20
20
|
|
|
21
21
|
## Response headers
|
|
22
22
|
|
|
@@ -28,7 +28,7 @@ RFC 0171 §C.1: every non-standard header is `OpenWOP-<Name>` and every header i
|
|
|
28
28
|
| `ETag` | 3 | Optional probe handle for mid-session capability change detection. Deprecated toward v2 (RFC 0165 §C.2). |
|
|
29
29
|
| `Location` | 1 | Canonical URI of the new template. |
|
|
30
30
|
| `OpenWOP-Idempotent-Replay` | 1 | Set when the response was served from the idempotency cache. |
|
|
31
|
-
| `OpenWOP-Version` |
|
|
31
|
+
| `OpenWOP-Version` | 52 | RFC 0172 §A.4 — the contract that produced this response; MUST equal the one used. |
|
|
32
32
|
| `Retry-After` | 1 | Seconds until the active claim is stale-eligible. |
|
|
33
33
|
|
|
34
34
|
## Webhook delivery headers
|
package/spec/v2/core/identity.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Identity
|
|
2
2
|
|
|
3
|
-
> **Status: Stable · v2.0
|
|
3
|
+
> **Status: Stable · v2.1.0 (2026-09-11) · RFC 0170, 0165, 0176.**
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
@@ -118,7 +118,7 @@ A host MUST reject a tenant-bound id whose tenant segment is not the caller's wi
|
|
|
118
118
|
|
|
119
119
|
**On the wire a tenant-bound id is one percent-encoded path segment** (`tenant%2Fopaque`); a host MUST decode before matching the grammar and MUST accept the bound form on every tenant-bound parameter.
|
|
120
120
|
|
|
121
|
-
**Through the overlap the bare form is admitted on a major-2 path parameter** — a stated affordance with an expiry, not a legacy branch of the grammar. A parameter carrying only the opaque segment (the spelling a `/v1/` create hands out) MUST resolve under the caller's tenant and never another's, and the response MUST name the resource bound (`versioning.md` §5); the credential supplies the segment the `403` check would read. Once a host advertises no `1.x` member it MUST refuse the bare form `400 validation_error` (not `id_tenant_mismatch`, not `not_found`). Ids in documents and bodies are bound, always.
|
|
121
|
+
**Through the overlap the bare form is admitted on a major-2 path parameter** — a stated affordance with an expiry, not a legacy branch of the grammar. A parameter carrying only the opaque segment (the spelling a `/v1/` create hands out) MUST resolve under the caller's tenant and never another's, and the response MUST name the resource bound (`versioning.md` §5); the credential supplies the segment the `403` check would read. Once a host advertises no `1.x` member it MUST refuse the bare form `400 validation_error` (not `id_tenant_mismatch`, not `not_found`). Ids in documents and bodies are bound, always. A client MAY bind at its request seam. Handle grammars (`memoryRef`, workspace `path`/`etag`, the plugin version token) and their `resolvability` class are specified where each handle is used; an importer MUST re-mint every `host`-scoped handle (`spec/v2/ext/portability/`).
|
|
122
122
|
|
|
123
123
|
## 6. Identity error codes (`spec/v2/errors.json`)
|
|
124
124
|
|
package/spec/v2/core/interop.md
CHANGED
package/spec/v2/core/overview.md
CHANGED
package/spec/v2/core/packs.md
CHANGED
package/spec/v2/core/replay.md
CHANGED
package/spec/v2/core/runs.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Runs
|
|
2
2
|
|
|
3
|
-
> **Status: Stable · v2.0
|
|
3
|
+
> **Status: Stable · v2.1.0 (2026-09-11) · RFC 0170 §A, §D.1; RFC 0171 §D; RFC 0176 §B.1.**
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
@@ -32,6 +32,7 @@ Every operation accepts `OpenWOP-Version` (overview.md); every mutating operatio
|
|
|
32
32
|
| `getEvalSummary` | `GET /runs/{runId}/eval-summary` | `runs:read` | `agents.evalSuite`; `404` when unadvertised |
|
|
33
33
|
| `getRunCompensation` | `GET /runs/{runId}/compensation` | `runs:read` | `compensation` (security-defaults.md) |
|
|
34
34
|
| `getRunEffects` | `GET /runs/{runId}/effects` | `runs:read` | `idempotency` (idempotency.md) |
|
|
35
|
+
| `listRuns` | `GET /runs` | `runs:read` | `runList` (RFC 0182); `404` when unadvertised |
|
|
35
36
|
|
|
36
37
|
## Create
|
|
37
38
|
|
|
@@ -84,6 +85,10 @@ An unknown root key, an unknown key inside a section, or a dotted key (`ai.provi
|
|
|
84
85
|
|
|
85
86
|
The `200` SHOULD carry a strong `ETag` derived from the latest persisted `sequence`; when present it MUST change on every observable transition and be stable otherwise. A request whose `If-None-Match` matches MUST receive `304` with no body. A host MAY compress (`gzip` baseline; `br`, `zstd` only where advertised under `restTransport.contentEncodings`) and MUST then set `Content-Encoding` and `Vary: Accept-Encoding`; the decoded body is byte-identical.
|
|
86
87
|
|
|
88
|
+
## List
|
|
89
|
+
|
|
90
|
+
`GET /runs` (RFC 0182; gated on `runList`) returns `{ runs: RunSnapshot[], nextCursor? }`, the caller's runs newest first: only runs whose tenant segment is the caller's, every `runId` bound (identity.md §5), and a run the caller created MUST appear. A page MUST NOT exceed `runList.maxPageSize`; `cursor` is opaque and one the host did not mint MUST be refused `400 validation_error`; `workflowId` and `status` are exact-match filters when `runList.filters` names them (an unadvertised filter is ignored).
|
|
91
|
+
|
|
87
92
|
## Cancel
|
|
88
93
|
|
|
89
94
|
`cancelRun` accepts `{ reason? }` and answers `200 { runId, status }` with `status` `cancelling` or `cancelled`; the cascade MAY be asynchronous and the run emits `run.cancelled` when it completes. A cancel on a run that is already terminal (`completed`, `failed`, `cancelled`) MUST be refused `409 run_terminal`; a `200` whose `status` echoes the terminal state is outside this grammar. Cancelling a parent MUST NOT silently abandon an active compensation (security-defaults.md). `run.cancelled.parentRunId` with `reason: parent-cancelled` records a cascade from a parent.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Versioning and Release
|
|
2
2
|
|
|
3
|
-
> **Status: Stable · v2.0
|
|
3
|
+
> **Status: Stable · v2.1.0 (2026-09-11) · RFC 0172, 0179, 0176.**
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
@@ -43,7 +43,7 @@ Every protocol response MUST carry `OpenWOP-Version: <major>.<minor>` naming the
|
|
|
43
43
|
|
|
44
44
|
A *protocol response* is one produced by an operation named in `spec/v2/path-manifest.json` (or its `/v1/` twin through the overlap); a shell, a hosting fallback or a proprietary route on the same origin has no version to name. Errata 2026-09-10: this read "any path" — §1.2's quantifier defect again.
|
|
45
45
|
|
|
46
|
-
**
|
|
46
|
+
**On a manifest-named path, a non-protocol response MUST NOT carry `OpenWOP-Version` and MUST NOT be `application/json`**; a reader, a cache or the suite MUST NOT count a response without the header, or with a `text/html` body, as reaching the operation (`reachedUnderMajor2`). A vendor path (§5) is not a shared name and is unconstrained.
|
|
47
47
|
|
|
48
48
|
**Content negotiation on a shared name is permitted, with conditions.** A host MAY serve a protocol operation and a page under one unversioned name, selecting on `Accept`, iff:
|
|
49
49
|
|
|
@@ -110,7 +110,7 @@ Through the overlap a host MUST advertise both majors (§1.1), MUST emit `OpenWO
|
|
|
110
110
|
|
|
111
111
|
**A run minted under major 1 and read under major 2 MUST be named by its tenant-bound projection** `<tenantId>/<the v1 id>` (`identity.md` §5). A host MUST NOT return the bare v1 id in a major-2 response body. Normative since 2026-09-04, when a conformance check asserting byte-equality with the v1 id and a host implementing `identity.md` §5 could not both hold — §5 had no reading.
|
|
112
112
|
|
|
113
|
-
The projection is mandatory
|
|
113
|
+
The projection is mandatory for a reason that is not stylistic: a tenant-bound id carries the segment `identity.md` §5's `403 id_tenant_mismatch` check reads, and **a bare id has none, so the cross-tenant refusal cannot run on it at all.** A legacy unprefixed form in documents would be a class of long-lived identifiers on which major 2's tenant isolation is structurally inapplicable; the grammar in `ids.schema.json` has no legacy branch and MUST NOT acquire one.
|
|
114
114
|
|
|
115
115
|
The overlap ends at v1 end-of-support (`overview.md`), when `protocolVersions[]` drops the `1.<n>` member and every alias carrying the `v1-end-of-support` trigger is removed.
|
|
116
116
|
|
|
@@ -118,7 +118,7 @@ The overlap ends at v1 end-of-support (`overview.md`), when `protocolVersions[]`
|
|
|
118
118
|
|
|
119
119
|
**Retirement flips every header-less request's contract.** Through the overlap a header-less request on an unversioned name is served major 1 (§1.3); where the v1 surface lives under `/v1/` that name is not a v1 key and falls through to whatever else is served there — typically a page. At end-of-support the same request is served major 2 and the page starts answering the operation. A `/v1/`-counting inventory cannot see this. Test: `manifest top-level segments ∩ anything else served unversioned` (`{agents, prompts, runs}` on the host that found it). A non-empty intersection MUST be resolved before end-of-support: move the page, or serve it under §1.4's conditions.
|
|
120
120
|
|
|
121
|
-
**
|
|
121
|
+
**Host-proprietary paths live at `/host/<org>/…` (RFC 0181).** Every vendor namespace — capability records (`capabilities.md` §3.2), error codes, event types, pack properties — is keyed to an org registered in `spec/v2/declaration.json`; paths join that pattern. A host MAY serve operations the manifest does not name under `/host/<org>/…` for its registered org: no major in the path, served regardless of `OpenWOP-Version`, never a protocol operation, never measured, outside §1.4. An org MUST NOT be named after a manifest segment under `/host/` (`reservedOrgs`); a host SHOULD advertise the mount under `extensions.<org>.<name>`. A `/v1/host/<org>/…` twin MAY ride the overlap and retires atomically with `/v1`.
|
|
122
122
|
|
|
123
123
|
## 6. Migration rows (RFC 0172)
|
|
124
124
|
|
package/spec/v2/core/webhooks.md
CHANGED
package/spec/v2/declaration.json
CHANGED
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
"extensionsKeyPattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*\\.[a-z][a-z0-9]*(-[a-z0-9]+)*$",
|
|
14
14
|
"reservedOrgs": [
|
|
15
15
|
"openwop",
|
|
16
|
-
"vendor"
|
|
16
|
+
"vendor",
|
|
17
|
+
"effect-seams",
|
|
18
|
+
"events"
|
|
17
19
|
],
|
|
18
20
|
"extensions": {
|
|
19
21
|
"example": {
|
|
@@ -21,6 +23,16 @@
|
|
|
21
23
|
"registered": "2026-09-06",
|
|
22
24
|
"reserved": true,
|
|
23
25
|
"note": "Never assignable to a real vendor (RFC 2606 precedent). A conformance scenario needs one registered org whose events no host owns, so the positive half of the vendor rule is drivable; without it the registry could only ever say no."
|
|
26
|
+
},
|
|
27
|
+
"openwop-app": {
|
|
28
|
+
"name": "openwop-app — the reference application host (app.openwop.dev), steward-affiliated; github.com/openwop/openwop-app",
|
|
29
|
+
"registered": "2026-09-11",
|
|
30
|
+
"note": "Ships vendor event types (e.g. openwop-app.conversation.recall_used), vendor error codes, and the /host/openwop-app/ path namespace (RFC 0181). Registered by the steward on the host's application over the steward bus, 2026-09-10."
|
|
31
|
+
},
|
|
32
|
+
"myndhyve": {
|
|
33
|
+
"name": "MyndHyve — workflow-runtime host (api.myndhyve.ai), steward-affiliated sibling",
|
|
34
|
+
"registered": "2026-09-11",
|
|
35
|
+
"note": "Ships vendor event types and error codes under myndhyve.* and the /host/myndhyve/ path namespace (RFC 0181). Registered by the steward on the host's application over the steward bus, 2026-09-10."
|
|
24
36
|
}
|
|
25
37
|
},
|
|
26
38
|
"metadata": [
|
|
@@ -1576,6 +1588,26 @@
|
|
|
1576
1588
|
"requirementIds": [],
|
|
1577
1589
|
"owningRfc": "0098"
|
|
1578
1590
|
},
|
|
1591
|
+
{
|
|
1592
|
+
"key": "runList",
|
|
1593
|
+
"kind": "family",
|
|
1594
|
+
"anchor": "core",
|
|
1595
|
+
"section": "core/capabilities.md#runList",
|
|
1596
|
+
"peerDependencyId": "runList",
|
|
1597
|
+
"witness": "witnessable-gated",
|
|
1598
|
+
"maturity": {
|
|
1599
|
+
"technical": "experimental",
|
|
1600
|
+
"adoption": "none"
|
|
1601
|
+
},
|
|
1602
|
+
"facets": [
|
|
1603
|
+
"maxPageSize",
|
|
1604
|
+
"filters"
|
|
1605
|
+
],
|
|
1606
|
+
"floorScenarios": [],
|
|
1607
|
+
"requirementIds": [],
|
|
1608
|
+
"owningRfc": "0182",
|
|
1609
|
+
"facetsFrom": "spec/v2/facets/runList.schema.json"
|
|
1610
|
+
},
|
|
1579
1611
|
{
|
|
1580
1612
|
"key": "interrupt",
|
|
1581
1613
|
"kind": "family",
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "RFC 0182 §A.5 — the run-list family's facets: the page ceiling the host honours and the exact-match filters it implements",
|
|
3
|
+
"properties": {
|
|
4
|
+
"maxPageSize": {
|
|
5
|
+
"type": "integer",
|
|
6
|
+
"minimum": 1,
|
|
7
|
+
"maximum": 1000
|
|
8
|
+
},
|
|
9
|
+
"filters": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"uniqueItems": true,
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": [
|
|
15
|
+
"workflowId",
|
|
16
|
+
"status"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"required": [
|
|
22
|
+
"maxPageSize"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -141,6 +141,11 @@
|
|
|
141
141
|
"path": "/prompts:render",
|
|
142
142
|
"operationId": "renderPromptTemplate"
|
|
143
143
|
},
|
|
144
|
+
{
|
|
145
|
+
"method": "GET",
|
|
146
|
+
"path": "/runs",
|
|
147
|
+
"operationId": "listRuns"
|
|
148
|
+
},
|
|
144
149
|
{
|
|
145
150
|
"method": "POST",
|
|
146
151
|
"path": "/runs",
|
|
@@ -273,7 +278,7 @@
|
|
|
273
278
|
}
|
|
274
279
|
],
|
|
275
280
|
"counts": {
|
|
276
|
-
"operations":
|
|
281
|
+
"operations": 52,
|
|
277
282
|
"channels": 2
|
|
278
283
|
}
|
|
279
284
|
}
|
package/spec/v2/release.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "RFC 0172 \u00a7D.1 \u2014 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.0
|
|
4
|
-
"corpusTag": "v2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"corpusTag": "v2.1.0",
|
|
5
5
|
"updated": "2026-09-05"
|
|
6
6
|
}
|