@openwop/spec-artifacts 2.43.1 → 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 +25 -25
- 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 +125 -23
- package/spec/v2/core/errors.md +6 -3
- package/spec/v2/core/interrupt.md +6 -2
- package/spec/v2/core/replay.md +3 -3
- package/spec/v2/core/runs.md +4 -2
- package/spec/v2/core/webhooks.md +3 -3
- package/spec/v2/declaration.json +8 -8
- package/spec/v2/errors.json +31 -1
- package/spec/v2/ext/brand/README.md +3 -3
- package/spec/v2/ext/canvas/README.md +3 -3
- package/spec/v2/ext/launchStudio/README.md +3 -3
- package/spec/v2/ext/messaging/README.md +3 -3
- package/spec/v2/ext/restTransport/README.md +3 -1
- package/spec/v2/facets/webhooks.schema.json +5 -0
- package/spec/v2/release.json +3 -3
- 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,32 +230,32 @@
|
|
|
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",
|
|
237
237
|
"spec/v2/core/packs.md": "b472a583211d466d6ab8e00c414c225b246e678043fe6283a710c899fadde913",
|
|
238
238
|
"spec/v2/core/persistence.md": "711874f74cb08b03cd118d683056db10a063517762fcea73ec70feb5d983e6a4",
|
|
239
239
|
"spec/v2/core/portability.md": "87c4327f674f714fda6217fd79b99d2ba219ad47dc02f9751bb56c200fb2c17a",
|
|
240
|
-
"spec/v2/core/replay.md": "
|
|
241
|
-
"spec/v2/core/runs.md": "
|
|
240
|
+
"spec/v2/core/replay.md": "4d379494057746c6883f6047972e93e621863b998ed291b9a691d3aa57c1ff43",
|
|
241
|
+
"spec/v2/core/runs.md": "55e21292ae4b41d0d104199a6c2634ecb3f787c4a671f9ebc37084be38ceef03",
|
|
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
|
-
"spec/v2/ext/brand/README.md": "
|
|
258
|
-
"spec/v2/ext/canvas/README.md": "
|
|
257
|
+
"spec/v2/ext/brand/README.md": "82989c018d7965bab029bcce7a67b1d76ffc433d08971a4cac91befcccc09438",
|
|
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",
|
|
@@ -263,12 +263,12 @@
|
|
|
263
263
|
"spec/v2/ext/grpc-transport/README.md": "6ba378e3c6d1f2e3269b392cfdf0c40565ee9bfa259d1baaa9ee1d350e38e792",
|
|
264
264
|
"spec/v2/ext/kanban/README.md": "bfc386dc0f874a4afa1e3ec6a2f99084b547dcce9bd363da3b8ebd8786b9c184",
|
|
265
265
|
"spec/v2/ext/knowledge/README.md": "cbe1f945a757791dedac0fd542a68c86c5b457778b831d58d9ae44a2baa270f2",
|
|
266
|
-
"spec/v2/ext/launchStudio/README.md": "
|
|
267
|
-
"spec/v2/ext/messaging/README.md": "
|
|
266
|
+
"spec/v2/ext/launchStudio/README.md": "a941ef1d2401438a412eaea48d2d6ca807a032b44ea08719fea33120daf088a0",
|
|
267
|
+
"spec/v2/ext/messaging/README.md": "949f350e35294f52ad490e42699f8c560cd154549516fbaa1805f06312b7f342",
|
|
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
|
@@ -7271,6 +7271,23 @@
|
|
|
7271
7271
|
}
|
|
7272
7272
|
]
|
|
7273
7273
|
},
|
|
7274
|
+
{
|
|
7275
|
+
"id": "openwop.gap.0140.10",
|
|
7276
|
+
"rfc": "0140",
|
|
7277
|
+
"local": "G10",
|
|
7278
|
+
"section": "§Conformance",
|
|
7279
|
+
"surface": "`openwop.requirement.replay.suppression-execution-ordinal` (openwop#1718) has no witness on any host, positive or negative. `conformance-replay-ordinal-loop` needs a host that both runs cycles and suppresses a side-effecting node in replay. The v2 reference host does neither for this fixture: it does not loop, it does not execute `core.conformance.side-effect`, and its `effectOutcome` (`store.ts:586` at openwop-examples `f56f092`) selects the latest outcome regardless of ordinal, which would fail the row if it looped. openwop-app does not index by ordinal (`nodeAttempts` is never reset), and MyndHyve does not seed `replaySourceOutcomes` from the prefix.",
|
|
7280
|
+
"witness": "unclassified",
|
|
7281
|
+
"requirementId": null,
|
|
7282
|
+
"disposition": "externally-gated",
|
|
7283
|
+
"target": "host-loops-with-replay-suppression",
|
|
7284
|
+
"sources": [
|
|
7285
|
+
{
|
|
7286
|
+
"file": "RFCS/registers/0140-replay-side-effect-suppression.gaps.md",
|
|
7287
|
+
"token": "G10"
|
|
7288
|
+
}
|
|
7289
|
+
]
|
|
7290
|
+
},
|
|
7274
7291
|
{
|
|
7275
7292
|
"id": "openwop.gap.0141.0",
|
|
7276
7293
|
"rfc": "0141",
|
|
@@ -9826,11 +9843,11 @@
|
|
|
9826
9843
|
"rfc": "0171",
|
|
9827
9844
|
"local": "G7",
|
|
9828
9845
|
"section": "§B.1",
|
|
9829
|
-
"surface": "MyndHyve
|
|
9846
|
+
"surface": "MyndHyve emitted about 56 UPPER_CASE run-failure codes that were neither registered nor vendor codes.",
|
|
9830
9847
|
"witness": "unclassified",
|
|
9831
9848
|
"requirementId": null,
|
|
9832
|
-
"disposition": "
|
|
9833
|
-
"target":
|
|
9849
|
+
"disposition": "closed",
|
|
9850
|
+
"target": null,
|
|
9834
9851
|
"sources": [
|
|
9835
9852
|
{
|
|
9836
9853
|
"file": "RFCS/registers/0171-v2-wire-envelope.gaps.md",
|
|
@@ -9843,7 +9860,7 @@
|
|
|
9843
9860
|
"rfc": "0171",
|
|
9844
9861
|
"local": "G8",
|
|
9845
9862
|
"section": "§B.1",
|
|
9846
|
-
"surface": "The v2 reference host emitted
|
|
9863
|
+
"surface": "The v2 reference host emitted unregistered run-failure codes that were not vendor codes.",
|
|
9847
9864
|
"witness": "unclassified",
|
|
9848
9865
|
"requirementId": null,
|
|
9849
9866
|
"disposition": "closed",
|
|
@@ -13059,8 +13076,8 @@
|
|
|
13059
13076
|
"surface": "No v2 SDK sends the header today (`openwop-sdks`: `sdk/typescript-v2`, `sdk/python-v2`, Go).",
|
|
13060
13077
|
"witness": "unclassified",
|
|
13061
13078
|
"requirementId": null,
|
|
13062
|
-
"disposition": "
|
|
13063
|
-
"target":
|
|
13079
|
+
"disposition": "closed",
|
|
13080
|
+
"target": null,
|
|
13064
13081
|
"sources": [
|
|
13065
13082
|
{
|
|
13066
13083
|
"file": "RFCS/registers/0219-client-version-header.gaps.md",
|
|
@@ -13068,6 +13085,40 @@
|
|
|
13068
13085
|
}
|
|
13069
13086
|
]
|
|
13070
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
|
+
},
|
|
13071
13122
|
{
|
|
13072
13123
|
"id": "openwop.gap.0220.1",
|
|
13073
13124
|
"rfc": "0220",
|
|
@@ -13136,6 +13187,23 @@
|
|
|
13136
13187
|
}
|
|
13137
13188
|
]
|
|
13138
13189
|
},
|
|
13190
|
+
{
|
|
13191
|
+
"id": "openwop.gap.0220.5",
|
|
13192
|
+
"rfc": "0220",
|
|
13193
|
+
"local": "G5",
|
|
13194
|
+
"section": "§B",
|
|
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.",
|
|
13196
|
+
"witness": "unclassified",
|
|
13197
|
+
"requirementId": null,
|
|
13198
|
+
"disposition": "closed",
|
|
13199
|
+
"target": null,
|
|
13200
|
+
"sources": [
|
|
13201
|
+
{
|
|
13202
|
+
"file": "RFCS/registers/0220-ext-families-graduate-on-evidence.gaps.md",
|
|
13203
|
+
"token": "G5"
|
|
13204
|
+
}
|
|
13205
|
+
]
|
|
13206
|
+
},
|
|
13139
13207
|
{
|
|
13140
13208
|
"id": "openwop.gap.0221.1",
|
|
13141
13209
|
"rfc": "0221",
|
|
@@ -13243,11 +13311,11 @@
|
|
|
13243
13311
|
"rfc": "0223",
|
|
13244
13312
|
"local": "G4",
|
|
13245
13313
|
"section": "§Implementation notes",
|
|
13246
|
-
"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.",
|
|
13247
13315
|
"witness": "unclassified",
|
|
13248
13316
|
"requirementId": null,
|
|
13249
|
-
"disposition": "
|
|
13250
|
-
"target":
|
|
13317
|
+
"disposition": "closed",
|
|
13318
|
+
"target": null,
|
|
13251
13319
|
"sources": [
|
|
13252
13320
|
{
|
|
13253
13321
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13260,11 +13328,11 @@
|
|
|
13260
13328
|
"rfc": "0223",
|
|
13261
13329
|
"local": "G5",
|
|
13262
13330
|
"section": "§Implementation notes",
|
|
13263
|
-
"surface": "MyndHyve
|
|
13331
|
+
"surface": "MyndHyve failed the gate with the unregistered `APPROVAL_REJECTED`.",
|
|
13264
13332
|
"witness": "unclassified",
|
|
13265
13333
|
"requirementId": null,
|
|
13266
|
-
"disposition": "
|
|
13267
|
-
"target":
|
|
13334
|
+
"disposition": "closed",
|
|
13335
|
+
"target": null,
|
|
13268
13336
|
"sources": [
|
|
13269
13337
|
{
|
|
13270
13338
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13341,36 +13409,36 @@
|
|
|
13341
13409
|
]
|
|
13342
13410
|
},
|
|
13343
13411
|
{
|
|
13344
|
-
"id": "openwop.gap.0223.
|
|
13412
|
+
"id": "openwop.gap.0223.10",
|
|
13345
13413
|
"rfc": "0223",
|
|
13346
|
-
"local": "
|
|
13414
|
+
"local": "G10",
|
|
13347
13415
|
"section": "§Conformance",
|
|
13348
|
-
"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.",
|
|
13349
13417
|
"witness": "unclassified",
|
|
13350
13418
|
"requirementId": null,
|
|
13351
|
-
"disposition": "
|
|
13352
|
-
"target":
|
|
13419
|
+
"disposition": "closed",
|
|
13420
|
+
"target": null,
|
|
13353
13421
|
"sources": [
|
|
13354
13422
|
{
|
|
13355
13423
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
13356
|
-
"token": "
|
|
13424
|
+
"token": "G10"
|
|
13357
13425
|
}
|
|
13358
13426
|
]
|
|
13359
13427
|
},
|
|
13360
13428
|
{
|
|
13361
|
-
"id": "openwop.gap.0223.
|
|
13429
|
+
"id": "openwop.gap.0223.11",
|
|
13362
13430
|
"rfc": "0223",
|
|
13363
|
-
"local": "
|
|
13431
|
+
"local": "G11",
|
|
13364
13432
|
"section": "§Conformance",
|
|
13365
|
-
"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`.",
|
|
13366
13434
|
"witness": "unclassified",
|
|
13367
13435
|
"requirementId": null,
|
|
13368
13436
|
"disposition": "externally-gated",
|
|
13369
|
-
"target": "
|
|
13437
|
+
"target": "host-routes-failed-gate-over-cycle",
|
|
13370
13438
|
"sources": [
|
|
13371
13439
|
{
|
|
13372
13440
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
13373
|
-
"token": "
|
|
13441
|
+
"token": "G11"
|
|
13374
13442
|
}
|
|
13375
13443
|
]
|
|
13376
13444
|
},
|
|
@@ -13408,6 +13476,40 @@
|
|
|
13408
13476
|
}
|
|
13409
13477
|
]
|
|
13410
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
|
+
},
|
|
13411
13513
|
{
|
|
13412
13514
|
"id": "openwop.gap.spec.a2a-integration.g1",
|
|
13413
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
|
|
|
@@ -118,13 +118,17 @@ The token grammar and the `interrupt.tokenAlgs[]` / `kid` check are [identity.md
|
|
|
118
118
|
|
|
119
119
|
### Rejection
|
|
120
120
|
|
|
121
|
-
A `reject` exits the suspend. The host MUST record `action: "reject"` and `decision: "rejected"` on `interrupt.resolved`, and
|
|
121
|
+
A `reject` exits the suspend. The host MUST record `action: "reject"` and `decision: "rejected"` on `interrupt.resolved`, and MAY also emit `approval.rejected`. The resume value returns to the raising node (§Re-entry and resume values).
|
|
122
122
|
|
|
123
123
|
- A node that does not turn the rejection into an output MUST fail with `approval_rejected` and `retryable: false` on the `node.failed` error, and MUST NOT be retried.
|
|
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/replay.md
CHANGED
|
@@ -63,7 +63,7 @@ When a replayed node produces an event different from the source at the same seq
|
|
|
63
63
|
Divergence codes (`spec/v2/errors.json`):
|
|
64
64
|
|
|
65
65
|
- **`replay_diverged_at_refusal`** (fork fails, `409`) — the source obtained a valid envelope and the replay a refusal, or the reverse. The host MUST NOT substitute silently; it MUST emit `replay.diverged-at-refusal` naming the node and both envelope kinds and fail the replay with this code.
|
|
66
|
-
- **`replay_source_missing`** (`node.failed` payload; the fork request still returns `201`) — a side-effecting node reached with no recorded source outcome
|
|
66
|
+
- **`replay_source_missing`** (`node.failed` payload; the fork request still returns `201`) — a side-effecting node reached with no recorded source outcome (§Suppression).
|
|
67
67
|
- **`replay_memory_snapshot_unavailable`** (fork refused, `409`) — the host cannot serve memory state as-of `fromSeq`. It MUST refuse rather than substitute current memory; `details.fromSeq` SHOULD name the index.
|
|
68
68
|
- **`replay_context_summary_unavailable`** (fork refused, `409`) — the host advertises `multiAgent.executionModel.contextBudget.summarization` and cannot serve, as-of `fromSeq`, a summary artifact (`context.summarized.summaryRef`) the replay would reuse. It MUST refuse rather than re-summarize; `details.fromSeq` SHOULD name the index.
|
|
69
69
|
|
|
@@ -74,7 +74,7 @@ Suppression is an obligation of the `replay` surface: advertising `replay` binds
|
|
|
74
74
|
For a fork with `mode: replay`:
|
|
75
75
|
|
|
76
76
|
1. A node that performs an external side effect — any operation observable outside the run's own event log — MUST NOT perform it.
|
|
77
|
-
2. The host MUST resolve the node's outcome from the source run's recorded terminal outcome
|
|
77
|
+
2. The host MUST resolve the node's outcome from the source run's recorded terminal outcome keyed on `(sourceRunId, nodeId, n)`, never on the fork's own `runId`, where `n` counts the node's `node.started` events through this execution, including retries, later visits and the fork's inherited prefix.
|
|
78
78
|
3. Absent a recorded outcome, the host MUST fail the node closed with `replay_source_missing`, MUST NOT perform the effect, and MUST NOT substitute a synthesized or empty success.
|
|
79
79
|
4. A node whose pack manifest declares `role: "side-effect"` MUST be treated as side-effecting; a host classifier MAY add nodes and MUST NOT remove any. A throwing seam satisfies rule 1 only.
|
|
80
80
|
5. The guarantee is whole-run and requires both classification before execution and a default-deny guard at every effect seam.
|
|
@@ -102,7 +102,7 @@ A host advertising `replay` MUST publish `schemas/v2/effect-seam-manifest.schema
|
|
|
102
102
|
1. Load the source run's events with `sequence < fromSeq` through the storage boundary, where an era-`2` log is translated (persistence.md).
|
|
103
103
|
2. Fold them to a projected state.
|
|
104
104
|
3. Initialize the new run with that state, copy-on-write into its own log.
|
|
105
|
-
4. For `replay`, resolve side-effecting nodes from the source run's recorded outcomes keyed on `(sourceRunId, nodeId,
|
|
105
|
+
4. For `replay`, resolve side-effecting nodes from the source run's recorded outcomes keyed on `(sourceRunId, nodeId, n)`; LLM invocations additionally consult the invocation log via the content-addressed invocation key.
|
|
106
106
|
5. For `branch`, executor invocations create new invocation-log entries keyed on the new `runId`.
|
|
107
107
|
|
|
108
108
|
## Forking a v1 run
|
package/spec/v2/core/runs.md
CHANGED
|
@@ -63,7 +63,7 @@ The `createRun` body is closed (`unevaluatedProperties: false`). Its fields:
|
|
|
63
63
|
The `201` response is `{ runId, status, eventsUrl, statusUrl? }`. `status` is one of `pending`, `running`, `waiting-approval`, `waiting-input`, `waiting-external`.
|
|
64
64
|
|
|
65
65
|
- `eventsUrl` and `statusUrl` MUST resolve under the origin the request was made to — a relative path, or an absolute URL on the same origin — and MUST NOT downgrade the scheme. A link naming a different host, or `http://` on an `https://` origin, is non-conformant.
|
|
66
|
-
- The base that minted `runId` MUST resolve it: `GET /runs/{runId}` and `GET /runs/{runId}/events/poll` at that base MUST answer `200` for the returned id, percent-encoded per [identity.md](identity.md) §5.
|
|
66
|
+
- The base that minted `runId` MUST resolve it: `GET /runs/{runId}` and `GET /runs/{runId}/events/poll` at that base MUST answer `200` for the returned id, percent-encoded per [identity.md](identity.md) §5.
|
|
67
67
|
|
|
68
68
|
### Refusals
|
|
69
69
|
|
|
@@ -191,7 +191,7 @@ Per-entry errors ([errors.md](errors.md)):
|
|
|
191
191
|
`drainPolicy` is one of:
|
|
192
192
|
|
|
193
193
|
- `drain-current-node` (default) — the executing node reaches a terminal first.
|
|
194
|
-
- `immediate` — the run is snapshotted between events. The executing attempt is cut: it has no terminal node event, a host MUST NOT record `node.failed` (or any terminal node event) for it, and the resumed run's `node.started` begins a fresh attempt. `run.paused` itself records the interruption; its payload MAY carry `interruptedNodeId` and `interruptedAttempt
|
|
194
|
+
- `immediate` — the run is snapshotted between events. The executing attempt is cut: it has no terminal node event, a host MUST NOT record `node.failed` (or any terminal node event) for it, and the resumed run's `node.started` begins a fresh attempt. `run.paused` itself records the interruption; its payload MAY carry `interruptedNodeId` and `interruptedAttempt`.
|
|
195
195
|
|
|
196
196
|
`resumeRun` accepts `{ reason? }`, answers `202 { runId, status: 'running', resumedAt? }`, and emits `run.resumed`.
|
|
197
197
|
|
|
@@ -224,6 +224,8 @@ The `201` response is `{ runId, sourceRunId, fromSeq?, mode, status, eventsUrl }
|
|
|
224
224
|
|
|
225
225
|
`getRunAncestry` returns `schemas/v2/run-ancestry-response.schema.json` (`runId`, `hostId`, `parent` or `null`). A client walks the chain one hop at a time via `parent.wellKnownUrl`.
|
|
226
226
|
|
|
227
|
+
`parent` is the dispatching run, `cause` its composition mechanism. A fork is not dispatched (its lineage is `parentRunId`): its `parent` MUST be `null`.
|
|
228
|
+
|
|
227
229
|
## Annotations, artifacts, eval summary
|
|
228
230
|
|
|
229
231
|
### Annotations
|
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
|
@@ -1803,8 +1803,8 @@
|
|
|
1803
1803
|
"extensionName": "brand",
|
|
1804
1804
|
"witness": "claims-check",
|
|
1805
1805
|
"maturity": {
|
|
1806
|
-
"technical": "
|
|
1807
|
-
"adoption": "
|
|
1806
|
+
"technical": "stable",
|
|
1807
|
+
"adoption": "single-witness"
|
|
1808
1808
|
},
|
|
1809
1809
|
"facets": [],
|
|
1810
1810
|
"floorScenarios": [],
|
|
@@ -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": [],
|
|
@@ -1947,8 +1947,8 @@
|
|
|
1947
1947
|
"extensionName": "launch-studio",
|
|
1948
1948
|
"witness": "claims-check",
|
|
1949
1949
|
"maturity": {
|
|
1950
|
-
"technical": "
|
|
1951
|
-
"adoption": "
|
|
1950
|
+
"technical": "stable",
|
|
1951
|
+
"adoption": "multi-witness"
|
|
1952
1952
|
},
|
|
1953
1953
|
"facets": [],
|
|
1954
1954
|
"floorScenarios": [],
|
|
@@ -1965,8 +1965,8 @@
|
|
|
1965
1965
|
"extensionName": "messaging",
|
|
1966
1966
|
"witness": "claims-check",
|
|
1967
1967
|
"maturity": {
|
|
1968
|
-
"technical": "
|
|
1969
|
-
"adoption": "
|
|
1968
|
+
"technical": "stable",
|
|
1969
|
+
"adoption": "single-witness"
|
|
1970
1970
|
},
|
|
1971
1971
|
"facets": [],
|
|
1972
1972
|
"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
|
# `brand` extension
|
|
2
2
|
|
|
3
|
-
> **Status:
|
|
3
|
+
> **Status: Stable.**
|
|
4
4
|
|
|
5
5
|
`brand` names a host service for brand artifacts: themes and personas. 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:** | `single-witness` |
|
|
12
12
|
| **peer-dependency id** | `brand` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.brand` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -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 |
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# `launchStudio` extension
|
|
2
2
|
|
|
3
|
-
> **Status:
|
|
3
|
+
> **Status: Stable.**
|
|
4
4
|
|
|
5
5
|
`launchStudio` names launch-studio operations for the multi-canvas launch workflow. 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** | `launchStudio` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.launch-studio` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# `messaging` extension
|
|
2
2
|
|
|
3
|
-
> **Status:
|
|
3
|
+
> **Status: Stable.**
|
|
4
4
|
|
|
5
5
|
`messaging` names outbound chat-egress dispatch through host-owned connectors. 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:** | `single-witness` |
|
|
12
12
|
| **peer-dependency id** | `messaging` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.messaging` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -32,12 +32,14 @@ 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. A host behind a front should list only the codings measured through that front.
|
|
36
|
+
|
|
35
37
|
## Conformance
|
|
36
38
|
|
|
37
39
|
`conformance/src/scenarios/v2-ext-rest-transport.test.ts` (major 2) records the witness under `openwop.family.restTransport`:
|
|
38
40
|
|
|
39
41
|
- **Conditional GET:** runs the `conformance-approval` fixture to `waiting-approval`. It checks for a strong `ETag`, a `304` with no body on a matching `If-None-Match`, and a changed `ETag` once the run completes.
|
|
40
|
-
- **Codings:** for each advertised coding, the decoded body is byte-identical to the identity body.
|
|
42
|
+
- **Codings:** for each advertised coding, the decoded body is byte-identical to the identity body. The probe goes through the base URL it is given, so it measures any front in the path.
|
|
41
43
|
|
|
42
44
|
A host without the claim records `inapplicable`. A host that makes the claim but lacks the fixture records `blocked`.
|
|
43
45
|
|
|
@@ -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.
|
|
5
|
-
"updated": "2026-09-
|
|
3
|
+
"version": "2.44.0",
|
|
4
|
+
"corpusTag": "v2.44.0",
|
|
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\"",
|