@openwop/spec-artifacts 2.43.2 → 2.44.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 +20 -20
- 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/schemas/v2/capabilities.schema.json +5 -0
- package/schemas/v2/error-envelope.schema.json +7 -1
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/gaps.json +87 -19
- package/spec/v2/core/errors.md +6 -3
- package/spec/v2/core/interrupt.md +5 -1
- package/spec/v2/core/webhooks.md +3 -3
- package/spec/v2/declaration.json +2 -2
- package/spec/v2/errors.json +31 -1
- package/spec/v2/ext/canvas/README.md +3 -3
- package/spec/v2/ext/restTransport/README.md +1 -1
- package/spec/v2/facets/webhooks.schema.json +5 -0
- package/spec/v2/release.json +2 -2
- package/spec/v2/surface-baseline.json +7 -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.44.0",
|
|
5
|
+
"corpusTag": "v2.44.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": "69464bc0e1e71ef3b543a73d4fa4f67202343d2603c80af8033f6c3619ef1b30",
|
|
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": "7efbc96aa7d5fb2d501f90585cc7fbb10da6a0ff41289b52cf6ddadf04dc852a",
|
|
13
|
+
"api/v2/asyncapi.yaml": "ac39be9e90e1daf84cb12cc268be3152c6b50f6852129ac42820db43bb26f41d",
|
|
14
|
+
"api/v2/openapi.yaml": "a8b2fdc24b017cf146985dd2360da4e794a87deb83b98fc51c54a1363fc5e391",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
|
|
17
17
|
"schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"schemas/v2/artifact.schema.json": "85b9dc284d39b99d2a66fa8cbf47f2dd3d8526d3bd6cc411ad315b372de38975",
|
|
117
117
|
"schemas/v2/audit-verify-result.schema.json": "14af8e9283510f0a40e48a2059c929ee44e0fc9fa3cc66a95bfbe90b17c48297",
|
|
118
118
|
"schemas/v2/budget-policy.schema.json": "c7449daeb6e1d95e7a047b8c2814d3d54748697c27046972834874867d9b5f4c",
|
|
119
|
-
"schemas/v2/capabilities.schema.json": "
|
|
119
|
+
"schemas/v2/capabilities.schema.json": "a76db7fbb18a98821c0ee4dfe51f615e59bb26c3d458bafd373fd3b6f7af4afe",
|
|
120
120
|
"schemas/v2/certification-bundle.schema.json": "82ce31a1ed6c7e21b0ba88ff62a7b8b768fc3b176b1d06fce023203830b94725",
|
|
121
121
|
"schemas/v2/channel-presence-payload.schema.json": "4eeb224910e6f7eee3ab5e7c3899559c25c83a26d0022e0ad195c4672611977a",
|
|
122
122
|
"schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"schemas/v2/envelopes/schema.request.schema.json": "be2c5f7aa881cdd252ccff47ac02193659e1393633a1541f4297383205d384a2",
|
|
143
143
|
"schemas/v2/envelopes/schema.response.schema.json": "d049a081267c06c28879c331b147f3ed821b14ccfd93005c67aff64db0a8c68e",
|
|
144
144
|
"schemas/v2/envelopes/ui.a2ui-surface.schema.json": "e92a2548ba65454c9e0a34f72ea6768d18f59e61fa5da7668d0b2d5baddaddc8",
|
|
145
|
-
"schemas/v2/error-envelope.schema.json": "
|
|
145
|
+
"schemas/v2/error-envelope.schema.json": "34f467d5775618f740059dab0aa49bf26247101feb0cdae3403560b6baf5eda9",
|
|
146
146
|
"schemas/v2/eval-summary.schema.json": "2f384daf05b8f3b4f604688cae504d6d9971ba41b8c771e55fe9a17e09e86b7a",
|
|
147
147
|
"schemas/v2/export-bundle.schema.json": "bd28905a7729437ab7f2ad8bb33e13a371b2bf5605a7eb2962a0d246de312d69",
|
|
148
148
|
"schemas/v2/form-content-pack-manifest.schema.json": "a1942a124e250a6e9fbdb6b811c5a125e78fbcbcaa46dfc71d0636f24710a339",
|
|
@@ -204,13 +204,13 @@
|
|
|
204
204
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
205
205
|
"spec/v1/alias-detectors.json": "29f21e0fb2c7a232a92a5c19b4cba3a86bc3b5e16f06780452f0421c66c6ec38",
|
|
206
206
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
207
|
-
"spec/v1/core-standard-manifest.json": "
|
|
207
|
+
"spec/v1/core-standard-manifest.json": "5ea51250e81a3bf70637811cdb3bacfa7d35609dc49ce1a4889f0cff9fb35c85",
|
|
208
208
|
"spec/v1/deprecations.json": "46df807fb4adf0aae24671c20f69975cf3496e3bc3a521cb7e6ea556bdce563c",
|
|
209
209
|
"spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
|
|
210
210
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
211
211
|
"spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
|
|
212
212
|
"spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
|
|
213
|
-
"spec/v1/gaps.json": "
|
|
213
|
+
"spec/v1/gaps.json": "07b0f5a206a015336307dd343b75adec647f06a9bae59ee08dbbfac851c503d5",
|
|
214
214
|
"spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
|
|
215
215
|
"spec/v1/migrations.json": "2efcd9064b2bc65a84a3b3d281aa86a91efd002690c1f4f14e8335c4a18194d1",
|
|
216
216
|
"spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"spec/v2/core/conformance.md": "0cfceb926eed87055550a5c23e640210c795fc8cf9dd1b2544db0e2b3842c564",
|
|
222
222
|
"spec/v2/core/connection-packs.md": "1ee129d792c537bfe82393ccb92555d8e6ddc342b1aa781a13f101b27ec38171",
|
|
223
223
|
"spec/v2/core/conversation.md": "354fa57c73d11062e523a44aa75a6353c5c81aefaf306d30c42416a228c82c86",
|
|
224
|
-
"spec/v2/core/errors.md": "
|
|
224
|
+
"spec/v2/core/errors.md": "6d5a67389de84556f81e2558a30d83959c9283c8c5481ce7c759021e486d84fd",
|
|
225
225
|
"spec/v2/core/events.md": "604abb6f9e2259a04103e1cb76d728712c3701c0d84dd915d4dc2949c912ee5e",
|
|
226
226
|
"spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
|
|
227
227
|
"spec/v2/core/headers.md": "5cb1624fa63acc81992b6a6d842ec392cf7271aaf2f65d1f83c8c4fa286e6730",
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
"spec/v2/core/idempotency.md": "2084d756789c1faf5121593fb39e67ca36a4c227178e175004742e403178ea49",
|
|
231
231
|
"spec/v2/core/identity.md": "2dceb1c2697015e4a4fa8a9b28f4fbd25fa44a76ca5a919c752e2a8163c819db",
|
|
232
232
|
"spec/v2/core/interop.md": "e72e25dff864c83b2980d7366b34054cffa072af0225821199f260f6228d260e",
|
|
233
|
-
"spec/v2/core/interrupt.md": "
|
|
233
|
+
"spec/v2/core/interrupt.md": "4c825634acac72900ebd3c5ac5941f55648fa33d2df92913ef16371dcb700a34",
|
|
234
234
|
"spec/v2/core/node-pack-runtimes.md": "e1088cb69b8c3c67256c494063328916c2980ab1aa97a7063de25bab82fdb1e5",
|
|
235
235
|
"spec/v2/core/oauth.md": "c96483a44b62978c596945fbb7d7c863cf6056cd980fdb4cf4e97555e3e10b72",
|
|
236
236
|
"spec/v2/core/overview.md": "4087f171b00a3907551f508fec32fb9b0b3ccec8c0ac1b0c7c6d32cd2c0e3ff8",
|
|
@@ -242,20 +242,20 @@
|
|
|
242
242
|
"spec/v2/core/security-defaults.md": "153884da7a2d54c30c81b5e649cfdef31e151b3a2a19dee1bc5a16c35d60a3aa",
|
|
243
243
|
"spec/v2/core/tool-catalog.md": "d16a9004418719c48301804aefa4d7ab6f41112a4ed83727f552aa1b92b418b0",
|
|
244
244
|
"spec/v2/core/versioning.md": "e3b3ab6d76e51035039a32173e9b412628a52c8fe7b16687ff58a2d0d983faa0",
|
|
245
|
-
"spec/v2/core/webhooks.md": "
|
|
245
|
+
"spec/v2/core/webhooks.md": "2fcb502be558014fd20b342687e0f078a5388fc430b2f99d883c0e73ddf7789f",
|
|
246
246
|
"spec/v2/core/workflow-chain-packs.md": "fdce7a8477e269950a2bac05ee6eddbd66eb0b670b464d00054f7196ec05d29c",
|
|
247
247
|
"spec/v2/corrections.json": "59f647f4d22477f6c2b06dcf913b682dde5d51dd5e607a5d0cf648ab60864d6e",
|
|
248
248
|
"spec/v2/corrections.schema.json": "46bbffb954d13bd9995aebc912ceeb2544f7064331abf25fd6ab85c81a5cec94",
|
|
249
|
-
"spec/v2/declaration.json": "
|
|
249
|
+
"spec/v2/declaration.json": "aba200967c28190c6889c27dcfb01fd02919d0c023b88693e9ffc57e9488021a",
|
|
250
250
|
"spec/v2/declaration.schema.json": "ef951633e4070899f64828f5cf1b5f4870270a0360f81dbb49b5b4d6cd407550",
|
|
251
|
-
"spec/v2/errors.json": "
|
|
251
|
+
"spec/v2/errors.json": "fa650cbbdf25a140fdaf82ec5269f95b4585ac4bdde1fa6b0b3ffe48a3f7943c",
|
|
252
252
|
"spec/v2/errors.schema.json": "47404ad53e6147cf9017b813483712466573e419fb33e6c4b6c12d3e7deba1bc",
|
|
253
253
|
"spec/v2/event-codemap.json": "37869a03cdfd8758b57e6f350641a6ebbd383231cebda51f5473ad85f94ab74c",
|
|
254
254
|
"spec/v2/event-codemap.schema.json": "b173f2a9bcc0bf9b62a474ce3b91e1431d597e64fd1560fc58662cd8606eaf9c",
|
|
255
255
|
"spec/v2/ext/README.md": "e2731ebb5156ece1840ed3b96e7a347f6345e73071ff4e54df0f21c1585c5027",
|
|
256
256
|
"spec/v2/ext/a2uiSurface/README.md": "5518c7f355262eb7cc584422f4ff8e548f066b211878f969274a3a578127622d",
|
|
257
257
|
"spec/v2/ext/brand/README.md": "82989c018d7965bab029bcce7a67b1d76ffc433d08971a4cac91befcccc09438",
|
|
258
|
-
"spec/v2/ext/canvas/README.md": "
|
|
258
|
+
"spec/v2/ext/canvas/README.md": "00ca0856e3a0146f1eeaec87209d450e2900ed2748dc7520cc60250a0d3ffbeb",
|
|
259
259
|
"spec/v2/ext/chat/README.md": "f59b6706162abbfff96f8bccd4c0e1aeed721047cf62e9af58c875727a38d716",
|
|
260
260
|
"spec/v2/ext/coordination/README.md": "c7fe0884f52405fdd02c5f9ec309ac6b585685ee06ec5f338fff7acf03c07148",
|
|
261
261
|
"spec/v2/ext/dataIntegration/README.md": "286dec8aa29e4d3225cbd8b3a361f5a438c3288e759966b9415ecbb99c576e70",
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
"spec/v2/ext/portability/README.md": "c59423ee446638b748a911b9e97e803c4786157be6120f656f0a060586bc7b82",
|
|
269
269
|
"spec/v2/ext/provider-idempotency/README.md": "9d1bccef0ec16a19a3370ae79c2f5a1726ce0d1d25a51352907f288a2ccb15d7",
|
|
270
270
|
"spec/v2/ext/provider-idempotency/registry.json": "5b5fecad604fb4ab38da39f5abe697a4e57b05406c398f8afeb377331b2bd965",
|
|
271
|
-
"spec/v2/ext/restTransport/README.md": "
|
|
271
|
+
"spec/v2/ext/restTransport/README.md": "c875fd7ae4818a5d5e93ab9b21e569de8700bb07c4dafacd60a46a46e4022ddb",
|
|
272
272
|
"spec/v2/ext/sandbox-runtime-notes/README.md": "0d1290fb1e20b2e35c0b15051541ab6546e4e2a6f693b4f912cb3f7d6a65e92c",
|
|
273
273
|
"spec/v2/ext/webResearch/README.md": "b675e6f6646128d781b661f754c2393eed86e5935d16c3a22df582a5ce025b9b",
|
|
274
274
|
"spec/v2/facets/a2a.schema.json": "b68bf5e29e455e46c2ad7cfcccf5963730ec2310ff9db81884550d8df30fd6ef",
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
"spec/v2/facets/sandbox.schema.json": "e75f54486d387b2d089791aa93b5093cd1450f1920753a0f97fc23acdfe978ed",
|
|
287
287
|
"spec/v2/facets/schemaVersions.schema.json": "890d3416c4b66511d51f329abc68e6f467f4338f16807e489fe682999b2b56b9",
|
|
288
288
|
"spec/v2/facets/supportedEnvelopes.schema.json": "644f22cc2236e30a611b5b7f1ba0458ff1925d68b94c514d9672583224e126bd",
|
|
289
|
-
"spec/v2/facets/webhooks.schema.json": "
|
|
289
|
+
"spec/v2/facets/webhooks.schema.json": "54b576f1d150e28e1642693d846ce471c118e9c521bdf3924185305fbd1d0de4",
|
|
290
290
|
"spec/v2/facets/workflowChainPacks.schema.json": "ea625ce818fbeb746478f00f31f96ee9613d538e4409c258c1bfb517acdeaba9",
|
|
291
291
|
"spec/v2/harness-trust-anchors.json": "6007b92eae16a070fbc3777424efb0abfe865fda89d096963109b96282b91205",
|
|
292
292
|
"spec/v2/harness-trust-anchors.schema.json": "372b5d92337c893d3449eff3f6bfd009ac09fdac285296d8bdbe0a08fff9e34c",
|
|
@@ -298,9 +298,9 @@
|
|
|
298
298
|
"spec/v2/path-manifest.json": "17298a245c5da9a70aa7ab0b7f2db4277e06209d6fcdd7187a8b4cea179c08f3",
|
|
299
299
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
300
300
|
"spec/v2/profiles.json": "180beb9ef2d161766fa23b2987e7e829851e3d316273147cf6a4a3f324befd6b",
|
|
301
|
-
"spec/v2/release.json": "
|
|
301
|
+
"spec/v2/release.json": "a93ba35569a8a8bbc68243fbaef446363e5d5d5d0b8c1235ec68d0eed5ab6363",
|
|
302
302
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
|
|
303
|
-
"spec/v2/surface-baseline.json": "
|
|
303
|
+
"spec/v2/surface-baseline.json": "0d60d3d34ddc8f1290a2fc3a6be2e5ef5cfa211cde0918d8702ec4dd299d5549"
|
|
304
304
|
},
|
|
305
|
-
"corpusCommit": "
|
|
305
|
+
"corpusCommit": "8bb20a89a81544aaf90b3a375fc6b1f4ffef3a33"
|
|
306
306
|
}
|
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.44.0
|
|
5
5
|
description: 'The OpenWOP conformance seams profile (`openwop-conformance-seams-v2`): test-only operations in their own
|
|
6
6
|
path space, `/conformance/seams/…`. The profile is versioned and validated against the canonical v2 schemas with no tolerance
|
|
7
7
|
path. It is not a capability: a host advertises the profile, never a `testSeams` flag.
|
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.44.0
|
|
5
5
|
description: 'OpenWOP v2 event streams over SSE. The run-events channel''s address is the OpenAPI path key, and the server
|
|
6
6
|
pathname is empty (bare origin). `streamMode` is a stream mode from the closed set, or a comma-separated combination of
|
|
7
7
|
them; `values` never combines. `hostEvents` has a default address, `/host/events`; a host MAY declare another under `heartbeat.deliveryChannel`.
|
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.44.0
|
|
5
5
|
summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
|
|
6
6
|
description: 'The OpenWOP v2 REST API. Paths are unversioned and served at the bare origin; a client selects a version with
|
|
7
7
|
the `OpenWOP-Version` header from the host''s `protocolVersions[]`. Conformance seams and test-mode operations are not
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/spec-artifacts",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.44.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": {
|
|
@@ -5329,6 +5329,11 @@
|
|
|
5329
5329
|
"fixed",
|
|
5330
5330
|
"exponential"
|
|
5331
5331
|
]
|
|
5332
|
+
},
|
|
5333
|
+
"maxElapsedMs": {
|
|
5334
|
+
"type": "integer",
|
|
5335
|
+
"minimum": 1,
|
|
5336
|
+
"description": "RFC 0225 — OPTIONAL. The longest, in ms, from a delivery's first attempt starting to its routing to the dead-letter sink when every attempt fails. A host advertising it MUST dead-letter an exhausted delivery within that bound (webhooks.md §Delivery)."
|
|
5332
5337
|
}
|
|
5333
5338
|
},
|
|
5334
5339
|
"description": "spec/v2/core/webhooks.md §Delivery — the policy a host retries a failed attempt under. The webhooks family carries it at v2; `triggerBridge.retryPolicy` is the v1 carrier and stays through the overlap."
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://openwop.dev/spec/v2/error-envelope.schema.json",
|
|
4
4
|
"title": "ErrorEnvelope (v2)",
|
|
5
|
-
"description": "GENERATED from spec/v2/errors.json by scripts/generate-error-envelope.mjs (RFC 0171 §B.1).
|
|
5
|
+
"description": "GENERATED from spec/v2/errors.json by scripts/generate-error-envelope.mjs (RFC 0171 §B.1). 111 registered codes; vendor codes match ^(?!openwop\\.)[a-z][a-z0-9]*(-[a-z0-9]+)*\\.[a-z][a-z0-9_]*$. Consumers MUST accept an unknown registered member and MUST NOT act on it (RFC 0171 §A.5).",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
8
|
"required": [
|
|
@@ -96,6 +96,9 @@
|
|
|
96
96
|
"workspace_too_large",
|
|
97
97
|
"unsupported_media_type",
|
|
98
98
|
"approval_rejected",
|
|
99
|
+
"node_config_invalid",
|
|
100
|
+
"sandbox_invocation_error",
|
|
101
|
+
"mcp_error",
|
|
99
102
|
"capability_not_provided",
|
|
100
103
|
"capability_required",
|
|
101
104
|
"credential_required",
|
|
@@ -369,6 +372,9 @@
|
|
|
369
372
|
"workspace_too_large": 413,
|
|
370
373
|
"unsupported_media_type": 415,
|
|
371
374
|
"approval_rejected": 422,
|
|
375
|
+
"node_config_invalid": 422,
|
|
376
|
+
"sandbox_invocation_error": 422,
|
|
377
|
+
"mcp_error": 502,
|
|
372
378
|
"capability_not_provided": 422,
|
|
373
379
|
"capability_required": 422,
|
|
374
380
|
"credential_required": 422,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"provenance": {
|
|
5
5
|
"suite": {
|
|
6
6
|
"package": "@openwop/openwop-conformance",
|
|
7
|
-
"version": "2.
|
|
7
|
+
"version": "2.44.0"
|
|
8
8
|
},
|
|
9
9
|
"note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
|
|
10
10
|
},
|
|
@@ -421,5 +421,5 @@
|
|
|
421
421
|
"$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
|
|
422
422
|
}
|
|
423
423
|
],
|
|
424
|
-
"digest": "
|
|
424
|
+
"digest": "fb25d9cf69d577e91d0c6e806546d28c8c43b8df666bb8dfef8bd8931945f9d5"
|
|
425
425
|
}
|
package/spec/v1/gaps.json
CHANGED
|
@@ -13076,8 +13076,8 @@
|
|
|
13076
13076
|
"surface": "No v2 SDK sends the header today (`openwop-sdks`: `sdk/typescript-v2`, `sdk/python-v2`, Go).",
|
|
13077
13077
|
"witness": "unclassified",
|
|
13078
13078
|
"requirementId": null,
|
|
13079
|
-
"disposition": "
|
|
13080
|
-
"target":
|
|
13079
|
+
"disposition": "closed",
|
|
13080
|
+
"target": null,
|
|
13081
13081
|
"sources": [
|
|
13082
13082
|
{
|
|
13083
13083
|
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
@@ -13085,6 +13085,40 @@
|
|
|
13085
13085
|
}
|
|
13086
13086
|
]
|
|
13087
13087
|
},
|
|
13088
|
+
{
|
|
13089
|
+
"id": "openwop.gap.0219.7",
|
|
13090
|
+
"rfc": "0219",
|
|
13091
|
+
"local": "G7",
|
|
13092
|
+
"section": "§Conformance",
|
|
13093
|
+
"surface": "`openwop.requirement.0219.no-floor-no-refusal` has no positive witness. All three measured hosts (the v2 reference host, MyndHyve, openwop-app) advertise `minClientVersion`, so every committed bundle records the row `inapplicable` with the reason \"this leg is for a host with no floor\".",
|
|
13094
|
+
"witness": "unclassified",
|
|
13095
|
+
"requirementId": null,
|
|
13096
|
+
"disposition": "externally-gated",
|
|
13097
|
+
"target": "host-without-min-client-version",
|
|
13098
|
+
"sources": [
|
|
13099
|
+
{
|
|
13100
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
13101
|
+
"token": "G7"
|
|
13102
|
+
}
|
|
13103
|
+
]
|
|
13104
|
+
},
|
|
13105
|
+
{
|
|
13106
|
+
"id": "openwop.gap.0219.8",
|
|
13107
|
+
"rfc": "0219",
|
|
13108
|
+
"local": "G8",
|
|
13109
|
+
"section": "§A / upgrade",
|
|
13110
|
+
"surface": "A browser preflights the new request header. A host whose `Access-Control-Allow-Headers` is an explicit list, and which serves browsers cross-origin, fails every request from a client that sends it. Found at the SDK 2.5.0 release: openwop-app's list omitted it (as it once omitted `OpenWOP-Version`), and so did MyndHyve's public pack reads (fixed in myndhyve#549). v2 says nothing about CORS.",
|
|
13111
|
+
"witness": "unclassified",
|
|
13112
|
+
"requirementId": null,
|
|
13113
|
+
"disposition": "transferred",
|
|
13114
|
+
"target": "openwop#1763",
|
|
13115
|
+
"sources": [
|
|
13116
|
+
{
|
|
13117
|
+
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
13118
|
+
"token": "G8"
|
|
13119
|
+
}
|
|
13120
|
+
]
|
|
13121
|
+
},
|
|
13088
13122
|
{
|
|
13089
13123
|
"id": "openwop.gap.0220.1",
|
|
13090
13124
|
"rfc": "0220",
|
|
@@ -13161,8 +13195,8 @@
|
|
|
13161
13195
|
"surface": "`canvas` has no tier-2 path yet. MyndHyve serves the canvas host service (myndhyve #547), but its claim depends on the `vendor.myndhyve.canvas` pack. The only v2-admissible version (1.0.1, `registry/v2/`) is signed with `signing.scheme: ed25519-canonical-json` (RFC 0177 §A), and MyndHyve's pack publish route and resolver do not implement that scheme. The v1-tree 1.0.0 pins `engines.openwop <2.0.0`, which a v2 host MUST refuse. This is a general v2 pack-signing gap at the host, not canvas-specific.",
|
|
13162
13196
|
"witness": "unclassified",
|
|
13163
13197
|
"requirementId": null,
|
|
13164
|
-
"disposition": "
|
|
13165
|
-
"target":
|
|
13198
|
+
"disposition": "closed",
|
|
13199
|
+
"target": null,
|
|
13166
13200
|
"sources": [
|
|
13167
13201
|
{
|
|
13168
13202
|
"file": "RFCS/registers/0220-ext-families-graduate-on-evidence.gaps.md",
|
|
@@ -13277,11 +13311,11 @@
|
|
|
13277
13311
|
"rfc": "0223",
|
|
13278
13312
|
"local": "G4",
|
|
13279
13313
|
"section": "§Implementation notes",
|
|
13280
|
-
"surface": "openwop-app
|
|
13314
|
+
"surface": "openwop-app recorded no `action` on single reject or timeout, emitted no `interrupt.resolved` on quorum reject, never emitted `approval.rejected`, and emitted no `node.failed` / `failedNodeId` on either reject path.",
|
|
13281
13315
|
"witness": "unclassified",
|
|
13282
13316
|
"requirementId": null,
|
|
13283
|
-
"disposition": "
|
|
13284
|
-
"target":
|
|
13317
|
+
"disposition": "closed",
|
|
13318
|
+
"target": null,
|
|
13285
13319
|
"sources": [
|
|
13286
13320
|
{
|
|
13287
13321
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13375,36 +13409,36 @@
|
|
|
13375
13409
|
]
|
|
13376
13410
|
},
|
|
13377
13411
|
{
|
|
13378
|
-
"id": "openwop.gap.0223.
|
|
13412
|
+
"id": "openwop.gap.0223.10",
|
|
13379
13413
|
"rfc": "0223",
|
|
13380
|
-
"local": "
|
|
13414
|
+
"local": "G10",
|
|
13381
13415
|
"section": "§Conformance",
|
|
13382
|
-
"surface": "`openwop.requirement.0223.
|
|
13416
|
+
"surface": "`openwop.requirement.0223.timeout-rejects` and `0223.timeout-never-grants` had no certified witness, and have no MyndHyve witness: its `core.approvalGate` has no timeout configuration.",
|
|
13383
13417
|
"witness": "unclassified",
|
|
13384
13418
|
"requirementId": null,
|
|
13385
|
-
"disposition": "
|
|
13386
|
-
"target":
|
|
13419
|
+
"disposition": "closed",
|
|
13420
|
+
"target": null,
|
|
13387
13421
|
"sources": [
|
|
13388
13422
|
{
|
|
13389
13423
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
13390
|
-
"token": "
|
|
13424
|
+
"token": "G10"
|
|
13391
13425
|
}
|
|
13392
13426
|
]
|
|
13393
13427
|
},
|
|
13394
13428
|
{
|
|
13395
|
-
"id": "openwop.gap.0223.
|
|
13429
|
+
"id": "openwop.gap.0223.11",
|
|
13396
13430
|
"rfc": "0223",
|
|
13397
|
-
"local": "
|
|
13431
|
+
"local": "G11",
|
|
13398
13432
|
"section": "§Conformance",
|
|
13399
|
-
"surface": "`openwop.
|
|
13433
|
+
"surface": "*(Renumbered from a second `G9` on 2026-09-28: two rows shared the local ID, so `spec/v1/gaps.json` carried `openwop.gap.0223.9` twice.)* `openwop.requirement.0223.reject-loopback-reasks` (openwop #1697) has no positive witness on any host. The v2 reference host does not run cycles. MyndHyve runs request-changes loops over condition edges on a successful gate output, and does not route a failed node over `any_failed` (its Cloud Run executor has no `triggerRule` handling), so the row stays `inapplicable` there. openwop-app rejects cycles. The row exists and is negatively controlled: registering the fixture on a host that does not loop records `executed-fail`.",
|
|
13400
13434
|
"witness": "unclassified",
|
|
13401
13435
|
"requirementId": null,
|
|
13402
|
-
"disposition": "
|
|
13403
|
-
"target":
|
|
13436
|
+
"disposition": "externally-gated",
|
|
13437
|
+
"target": "host-routes-failed-gate-over-cycle",
|
|
13404
13438
|
"sources": [
|
|
13405
13439
|
{
|
|
13406
13440
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
13407
|
-
"token": "
|
|
13441
|
+
"token": "G11"
|
|
13408
13442
|
}
|
|
13409
13443
|
]
|
|
13410
13444
|
},
|
|
@@ -13442,6 +13476,40 @@
|
|
|
13442
13476
|
}
|
|
13443
13477
|
]
|
|
13444
13478
|
},
|
|
13479
|
+
{
|
|
13480
|
+
"id": "openwop.gap.0225.1",
|
|
13481
|
+
"rfc": "0225",
|
|
13482
|
+
"local": "G1",
|
|
13483
|
+
"section": "§Implementation notes",
|
|
13484
|
+
"surface": "No host advertises `retryPolicy.maxElapsedMs` yet, so the new row has no witness.",
|
|
13485
|
+
"witness": "unclassified",
|
|
13486
|
+
"requirementId": null,
|
|
13487
|
+
"disposition": "externally-gated",
|
|
13488
|
+
"target": "host-advertises-max-elapsed",
|
|
13489
|
+
"sources": [
|
|
13490
|
+
{
|
|
13491
|
+
"file": "RFCS/registers/0225-webhook-retry-max-elapsed.gaps.md",
|
|
13492
|
+
"token": "G1"
|
|
13493
|
+
}
|
|
13494
|
+
]
|
|
13495
|
+
},
|
|
13496
|
+
{
|
|
13497
|
+
"id": "openwop.gap.0226.1",
|
|
13498
|
+
"rfc": "0226",
|
|
13499
|
+
"local": "G1",
|
|
13500
|
+
"section": "§Unresolved questions",
|
|
13501
|
+
"surface": "Whether `mcp_unreachable` (an MCP peer that cannot be reached) needs its own registered code.",
|
|
13502
|
+
"witness": "unclassified",
|
|
13503
|
+
"requirementId": null,
|
|
13504
|
+
"disposition": "closed",
|
|
13505
|
+
"target": null,
|
|
13506
|
+
"sources": [
|
|
13507
|
+
{
|
|
13508
|
+
"file": "RFCS/registers/0226-shared-run-failure-codes.gaps.md",
|
|
13509
|
+
"token": "G1"
|
|
13510
|
+
}
|
|
13511
|
+
]
|
|
13512
|
+
},
|
|
13445
13513
|
{
|
|
13446
13514
|
"id": "openwop.gap.spec.a2a-integration.g1",
|
|
13447
13515
|
"rfc": "0152",
|
package/spec/v2/core/errors.md
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
## Why this exists
|
|
6
6
|
|
|
7
|
-
Every error a v2 host returns is a row in one registry. A client routes on `error`, never on `message`. A code that is not registered is not a protocol error.
|
|
7
|
+
Every error a v2 host returns is a row in one registry. A client routes on `error`, never on `message`. A code that is not registered is not a protocol error.
|
|
8
8
|
|
|
9
9
|
## The registry
|
|
10
10
|
|
|
11
|
-
`spec/v2/errors.json` holds one row per code, defined by `spec/v2/errors.schema.json`. It registers **
|
|
11
|
+
`spec/v2/errors.json` holds one row per code, defined by `spec/v2/errors.schema.json`. It registers **111** codes. `schemas/v2/error-envelope.schema.json` is GENERATED from it and MUST NOT be edited by hand.
|
|
12
12
|
|
|
13
13
|
- A host MUST emit a registered code, or a vendor code, wherever it emits an error code: the `error` of every error response, and `error.code` on `run.failed`, `node.failed` and the snapshot's `error` (overview.md §0). A recorded event re-emitted by replay or `:fork` is carried as recorded ([replay.md](replay.md)).
|
|
14
14
|
- A vendor code MUST match `^(?!openwop\.)[a-z][a-z0-9]*(-[a-z0-9]+)*\.[a-z][a-z0-9_]*$`, with its first segment an org registered in `spec/v2/declaration.json`. `openwop.` is reserved.
|
|
@@ -47,7 +47,7 @@ The idempotency mismatch code is `idempotency_key_mismatch` only ([idempotency.m
|
|
|
47
47
|
|
|
48
48
|
## Codes by HTTP status
|
|
49
49
|
|
|
50
|
-
Generated from `spec/v2/errors.json` (
|
|
50
|
+
Generated from `spec/v2/errors.json` (111 codes; `retriable` and `statusSource` are in the registry).
|
|
51
51
|
|
|
52
52
|
Code | Status
|
|
53
53
|
--- | ---
|
|
@@ -141,10 +141,12 @@ Code | Status
|
|
|
141
141
|
`fork_point_invalid` | 422
|
|
142
142
|
`loop_limit_exceeded` | 422
|
|
143
143
|
`mcp_mrtr_rounds_exceeded` | 422
|
|
144
|
+
`node_config_invalid` | 422
|
|
144
145
|
`pack_runtime_requirement_unmet` | 422
|
|
145
146
|
`recursion_limit_exceeded` | 422
|
|
146
147
|
`residency_unavailable` | 422
|
|
147
148
|
`run_timeout` | 422
|
|
149
|
+
`sandbox_invocation_error` | 422
|
|
148
150
|
`sandbox_memory_exceeded` | 422
|
|
149
151
|
`sandbox_timeout` | 422
|
|
150
152
|
`token_budget_exceeded` | 422
|
|
@@ -157,6 +159,7 @@ Code | Status
|
|
|
157
159
|
`pack_load_failure` | 500
|
|
158
160
|
`payload_unprojectable` | 500
|
|
159
161
|
`credential_unavailable` | 501
|
|
162
|
+
`mcp_error` | 502
|
|
160
163
|
`pack_registry_unreachable` | 503
|
|
161
164
|
`runner_unavailable` | 503
|
|
162
165
|
|
|
@@ -124,7 +124,11 @@ A `reject` exits the suspend. The host MUST record `action: "reject"` and `decis
|
|
|
124
124
|
- A rejected gate is a failed source. It MUST NOT satisfy an `all_success`, `any_success` or `none_failed` edge. The run continues past it only over an edge whose `triggerRule` admits a failed source (`all_complete` or `any_failed`).
|
|
125
125
|
- When no such edge exists, the run MUST terminate `failed` with `run.failed.error.code` `approval_rejected` and `failedNodeId` naming the gate.
|
|
126
126
|
- The gate resolves rejected on one eligible `reject` under `single-veto`, or when rejects exceed half of `requiredApprovals` under `majority`. A vote that does not decide the gate MUST NOT emit `interrupt.resolved`.
|
|
127
|
-
- When a non-zero `timeoutMs` elapses with no resolution
|
|
127
|
+
- When a non-zero `timeoutMs` elapses with no resolution:
|
|
128
|
+
- the host MUST resolve the gate rejected, recording `action: "timeout"`, `decision: "rejected"` and `reason: "timeout"`, whatever `onTimeout` holds, and MUST apply the rules above;
|
|
129
|
+
- a timeout MUST NOT grant a gate. A host MUST treat `onTimeout: "approve"` as `reject` and SHOULD NOT emit it;
|
|
130
|
+
- `escalate` MAY notify a host-defined target but MUST NOT extend or grant the gate;
|
|
131
|
+
- a host MUST NOT accept `timeout` on a resume request.
|
|
128
132
|
- On replay the failure MUST be derived from the recorded `interrupt.resolved`, never re-decided.
|
|
129
133
|
|
|
130
134
|
## Approver enforcement
|
package/spec/v2/core/webhooks.md
CHANGED
|
@@ -9,7 +9,7 @@ A client registers a URL and an event filter once; the host POSTs matching event
|
|
|
9
9
|
|
|
10
10
|
## Surfaces
|
|
11
11
|
|
|
12
|
-
A host that advertises `webhooks` ([capabilities.md](capabilities.md)) serves `registerWebhook` (`POST /webhooks`) and `unregisterWebhook` (`DELETE /webhooks/{webhookId}`) from `api/v2/openapi.yaml`. The facet (`spec/v2/facets/webhooks.schema.json`)
|
|
12
|
+
A host that advertises `webhooks` ([capabilities.md](capabilities.md)) serves `registerWebhook` (`POST /webhooks`) and `unregisterWebhook` (`DELETE /webhooks/{webhookId}`) from `api/v2/openapi.yaml`. The facet (`spec/v2/facets/webhooks.schema.json`) carries `signatureAlgorithms[]`, which MUST list `"v1"`.
|
|
13
13
|
|
|
14
14
|
| Operation | Request | Response |
|
|
15
15
|
| --- | --- | --- |
|
|
@@ -77,7 +77,7 @@ A subscriber MUST reject an unrecognized `OpenWOP-Signature-Algorithm` value, an
|
|
|
77
77
|
|
|
78
78
|
Durable delivery is an obligation of the `webhooks` surface ([security-defaults.md](security-defaults.md)). A host MUST:
|
|
79
79
|
|
|
80
|
-
- retry a failed attempt per its advertised `retryPolicy` (`maxAttempts`, `backoff ∈ none | fixed | exponential`) with backoff between attempts;
|
|
80
|
+
- retry a failed attempt per its advertised `retryPolicy` (`maxAttempts`, `backoff ∈ none | fixed | exponential`, optional `maxElapsedMs`) with backoff between attempts, and when it advertises `maxElapsedMs`, dead-letter an exhausted delivery within that many milliseconds of the first attempt's start;
|
|
81
81
|
- route a delivery whose retries are exhausted to the dead-letter sink (§Dead letters), rather than drop it;
|
|
82
82
|
- deliver each matching event at least once; a receiver MAY observe the same event more than once;
|
|
83
83
|
- not make the start of an attempt to one subscription wait for an attempt to a *different* subscription to finish (answered, failed, or timed out) (§Delivery isolation);
|
|
@@ -108,7 +108,7 @@ This sink is the delivery sink; the `deadLetter` family is the run sink and is a
|
|
|
108
108
|
|
|
109
109
|
## Replay
|
|
110
110
|
|
|
111
|
-
A
|
|
111
|
+
A `replay` fork's re-emitted history is never delivered ([replay.md](replay.md) §Suppression); a `branch` fork's events are.
|
|
112
112
|
|
|
113
113
|
## Egress
|
|
114
114
|
|
package/spec/v2/declaration.json
CHANGED
|
@@ -1821,8 +1821,8 @@
|
|
|
1821
1821
|
"extensionName": "canvas",
|
|
1822
1822
|
"witness": "claims-check",
|
|
1823
1823
|
"maturity": {
|
|
1824
|
-
"technical": "
|
|
1825
|
-
"adoption": "
|
|
1824
|
+
"technical": "stable",
|
|
1825
|
+
"adoption": "multi-witness"
|
|
1826
1826
|
},
|
|
1827
1827
|
"facets": [],
|
|
1828
1828
|
"floorScenarios": [],
|
package/spec/v2/errors.json
CHANGED
|
@@ -849,9 +849,39 @@
|
|
|
849
849
|
"since": "2.43",
|
|
850
850
|
"source": "RFC 0223; spec/v2/core/interrupt.md §Rejection"
|
|
851
851
|
},
|
|
852
|
+
{
|
|
853
|
+
"code": "node_config_invalid",
|
|
854
|
+
"meaning": "A node's configuration is missing a required value or holds one the node cannot use, so the node failed.",
|
|
855
|
+
"httpStatus": 422,
|
|
856
|
+
"statusSource": "v2 decision",
|
|
857
|
+
"retriable": false,
|
|
858
|
+
"details": null,
|
|
859
|
+
"since": "2.44",
|
|
860
|
+
"source": "RFC 0226 §A (measured: openwop-app `invalid_config` ×13, MyndHyve `CONFIG_INVALID`)"
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
"code": "sandbox_invocation_error",
|
|
864
|
+
"meaning": "A pack node running in the sandbox threw an error outside the canonical sandbox catalog, so the node failed.",
|
|
865
|
+
"httpStatus": 422,
|
|
866
|
+
"statusSource": "v2 decision",
|
|
867
|
+
"retriable": false,
|
|
868
|
+
"details": null,
|
|
869
|
+
"since": "2.44",
|
|
870
|
+
"source": "RFC 0226 §A; spec/v1/host-sample-test-seams.md:340 already names it (the suite's sandbox probe emits it)"
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
"code": "mcp_error",
|
|
874
|
+
"meaning": "An MCP server the host called answered with a JSON-RPC error, so the node failed.",
|
|
875
|
+
"httpStatus": 502,
|
|
876
|
+
"statusSource": "v2 decision",
|
|
877
|
+
"retriable": false,
|
|
878
|
+
"details": null,
|
|
879
|
+
"since": "2.44",
|
|
880
|
+
"source": "RFC 0226 §A (a v2 decision: the host acted as a gateway to the MCP peer, whose answer was an error)"
|
|
881
|
+
},
|
|
852
882
|
{
|
|
853
883
|
"code": "capability_not_provided",
|
|
854
|
-
"meaning": "The host does not provide a capability the request or pack requires.",
|
|
884
|
+
"meaning": "The host does not provide a capability the request or pack requires, including a node type it cannot execute.",
|
|
855
885
|
"httpStatus": 422,
|
|
856
886
|
"statusSource": "v1 convention",
|
|
857
887
|
"retriable": false,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# `canvas` extension
|
|
2
2
|
|
|
3
|
-
> **Status:
|
|
3
|
+
> **Status: Stable.**
|
|
4
4
|
|
|
5
5
|
`canvas` names a host service that reads and writes canvas state. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
|
|
6
6
|
|
|
7
7
|
| Field | Value |
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
|
-
| **technical:** | `
|
|
11
|
-
| **adoption:** | `
|
|
10
|
+
| **technical:** | `stable` |
|
|
11
|
+
| **adoption:** | `multi-witness` |
|
|
12
12
|
| **peer-dependency id** | `canvas` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.canvas` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -32,7 +32,7 @@ For each coding listed in `contentEncodings`, a request that names only that cod
|
|
|
32
32
|
|
|
33
33
|
A client MUST NOT infer anything else from the record.
|
|
34
34
|
|
|
35
|
-
The claim describes what a client receives at the host's advertised base URL, so a CDN or proxy in front of the host is part of it. A front that drops or rewrites a coding the origin produces makes the claim false.
|
|
35
|
+
The claim describes what a client receives at the host's advertised base URL, so a CDN or proxy in front of the host is part of it. A front that drops or rewrites a coding the origin produces makes the claim false. A host behind a front should list only the codings measured through that front.
|
|
36
36
|
|
|
37
37
|
## Conformance
|
|
38
38
|
|
|
@@ -35,6 +35,11 @@
|
|
|
35
35
|
"fixed",
|
|
36
36
|
"exponential"
|
|
37
37
|
]
|
|
38
|
+
},
|
|
39
|
+
"maxElapsedMs": {
|
|
40
|
+
"type": "integer",
|
|
41
|
+
"minimum": 1,
|
|
42
|
+
"description": "RFC 0225 \u2014 OPTIONAL. The longest, in ms, from a delivery's first attempt starting to its routing to the dead-letter sink when every attempt fails. A host advertising it MUST dead-letter an exhausted delivery within that bound (webhooks.md \u00a7Delivery)."
|
|
38
43
|
}
|
|
39
44
|
},
|
|
40
45
|
"description": "spec/v2/core/webhooks.md \u00a7Delivery \u2014 the policy a host retries a failed attempt under. The webhooks family carries it at v2; `triggerBridge.retryPolicy` is the v1 carrier and stays through the overlap."
|
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.44.0",
|
|
4
|
+
"corpusTag": "v2.44.0",
|
|
5
5
|
"updated": "2026-09-28"
|
|
6
6
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"schemas/v2/**/*.json",
|
|
5
5
|
"spec/v2/path-manifest.json"
|
|
6
6
|
],
|
|
7
|
-
"release": "2.
|
|
7
|
+
"release": "2.44.0",
|
|
8
8
|
"kinds": {
|
|
9
9
|
"union": [
|
|
10
10
|
"channel",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"type"
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
|
-
"count":
|
|
21
|
+
"count": 8557,
|
|
22
22
|
"surfaces": [
|
|
23
23
|
"schemas/v2/a2a-task-state.schema.json#/contextId|type|string",
|
|
24
24
|
"schemas/v2/a2a-task-state.schema.json#/interruptKind|enum-member|\"approval\"",
|
|
@@ -3521,9 +3521,11 @@
|
|
|
3521
3521
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy/backoff|enum-member|\"none\"",
|
|
3522
3522
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy/backoff|type|string",
|
|
3523
3523
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy/maxAttempts|type|integer",
|
|
3524
|
+
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy/maxElapsedMs|type|integer",
|
|
3524
3525
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|closed|true",
|
|
3525
3526
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|property|backoff",
|
|
3526
3527
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|property|maxAttempts",
|
|
3528
|
+
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|property|maxElapsedMs",
|
|
3527
3529
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|required|backoff",
|
|
3528
3530
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|required|maxAttempts",
|
|
3529
3531
|
"schemas/v2/capabilities.schema.json#/webhooks/retryPolicy|type|object",
|
|
@@ -5365,8 +5367,10 @@
|
|
|
5365
5367
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"interrupt_token_invalid\"",
|
|
5366
5368
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"key_revoked\"",
|
|
5367
5369
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"loop_limit_exceeded\"",
|
|
5370
|
+
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"mcp_error\"",
|
|
5368
5371
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"mcp_mrtr_rounds_exceeded\"",
|
|
5369
5372
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"mock_provider_forbidden\"",
|
|
5373
|
+
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"node_config_invalid\"",
|
|
5370
5374
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"not_found\"",
|
|
5371
5375
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"oauth_provider_unsupported\"",
|
|
5372
5376
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"oauth_scope_unsupported\"",
|
|
@@ -5405,6 +5409,7 @@
|
|
|
5405
5409
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"runner_unavailable\"",
|
|
5406
5410
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"sandbox_capability_denied\"",
|
|
5407
5411
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"sandbox_escape_attempt\"",
|
|
5412
|
+
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"sandbox_invocation_error\"",
|
|
5408
5413
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"sandbox_memory_exceeded\"",
|
|
5409
5414
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"sandbox_timeout\"",
|
|
5410
5415
|
"schemas/v2/error-envelope.schema.json#/error|enum-member|\"schedule_horizon_exceeded\"",
|