@openwop/spec-artifacts 2.43.0 → 2.43.1
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 +44 -44
- package/api/seams-v2.yaml +57 -1
- package/api/v2/asyncapi.yaml +1 -1
- package/api/v2/openapi.yaml +1 -1
- package/package.json +1 -1
- package/schemas/v2/run-event-payloads.schema.json +2 -1
- package/schemas/v2/suspend-request.schema.json +2 -2
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/gaps.json +100 -15
- package/spec/v2/core/capabilities.md +1 -1
- package/spec/v2/core/conformance.md +1 -1
- package/spec/v2/core/connection-packs.md +1 -1
- package/spec/v2/core/conversation.md +1 -1
- package/spec/v2/core/errors.md +3 -3
- package/spec/v2/core/events.md +1 -1
- package/spec/v2/core/form-content-packs.md +1 -1
- package/spec/v2/core/idempotency.md +1 -1
- package/spec/v2/core/identity.md +1 -1
- package/spec/v2/core/interop.md +1 -1
- package/spec/v2/core/interrupt.md +12 -9
- package/spec/v2/core/node-pack-runtimes.md +1 -1
- package/spec/v2/core/oauth.md +1 -1
- package/spec/v2/core/overview.md +1 -1
- package/spec/v2/core/packs.md +4 -4
- package/spec/v2/core/persistence.md +1 -1
- package/spec/v2/core/portability.md +1 -1
- package/spec/v2/core/replay.md +1 -1
- package/spec/v2/core/runs.md +1 -1
- package/spec/v2/core/security-defaults.md +1 -1
- package/spec/v2/core/tool-catalog.md +1 -1
- package/spec/v2/core/versioning.md +1 -1
- package/spec/v2/core/webhooks.md +1 -1
- package/spec/v2/core/workflow-chain-packs.md +1 -1
- package/spec/v2/declaration.json +8 -8
- package/spec/v2/ext/canvas/README.md +1 -1
- package/spec/v2/ext/chat/README.md +1 -1
- package/spec/v2/ext/dataIntegration/README.md +3 -3
- package/spec/v2/ext/kanban/README.md +1 -1
- package/spec/v2/ext/knowledge/README.md +1 -1
- package/spec/v2/ext/launchStudio/README.md +1 -1
- package/spec/v2/ext/webResearch/README.md +1 -1
- package/spec/v2/release.json +2 -2
- package/spec/v2/surface-baseline.json +1 -1
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.43.
|
|
5
|
-
"corpusTag": "v2.43.
|
|
4
|
+
"version": "2.43.1",
|
|
5
|
+
"corpusTag": "v2.43.1",
|
|
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": "a0a51b581511aaec7f86c67e8157988e580564f569343556dfce3c5329926ce2",
|
|
13
|
+
"api/v2/asyncapi.yaml": "0ad04a46c6985d782a7cc3645ded70fd973fcda86ef244086419274062855c09",
|
|
14
|
+
"api/v2/openapi.yaml": "95bf518a2290e614e2ba750dfe5233f8df242fafdd31dd84beafbdd512c0e810",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
|
|
17
17
|
"schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
"schemas/v2/residency.schema.json": "3fd23c9732beb140504e81560fc426eb6764d547e56da5fb92c5a5c7bf04db3a",
|
|
172
172
|
"schemas/v2/run-ancestry-response.schema.json": "334c17f2062dea62726ca1d07b8be3f169cdc422af843c1def5fb317039814c9",
|
|
173
173
|
"schemas/v2/run-diff-response.schema.json": "8bdb2045c274580038bd74781f7d062f5049839797c164a89de4ed89edc53a74",
|
|
174
|
-
"schemas/v2/run-event-payloads.schema.json": "
|
|
174
|
+
"schemas/v2/run-event-payloads.schema.json": "f8518f366ad4379356eaf94063817ea0e75975873b883f75e42d98bef6eb4565",
|
|
175
175
|
"schemas/v2/run-event.schema.json": "2f0d7416bd376c56affe97b6b2b49981532e8e9ff45c0a162cf806c78b3e7fb7",
|
|
176
176
|
"schemas/v2/run-list-response.schema.json": "c2dbc34768dcf64528914a213aa3cb55952e8e3e90a64b04a9423b2a19749d38",
|
|
177
177
|
"schemas/v2/run-options.schema.json": "f0e9f494d80086c2ed2cf9fe87df54e5b4e66601699c4a1089f4edbc7ba58867",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"schemas/v2/self-hosted-runner-result-frame.schema.json": "8e739a721f350226f3ffb4af752b4fe0a72016042a7b6f42e16c0487c3c58983",
|
|
184
184
|
"schemas/v2/subject-link.schema.json": "1fc941d6c14af886534009f2ffa6611e2035eb07e30b1df918c50d6bafff026c",
|
|
185
185
|
"schemas/v2/subject.schema.json": "094e981fb20052a911393e219ea5f2065d8b8417b65080a70c5ea99fd960a8fe",
|
|
186
|
-
"schemas/v2/suspend-request.schema.json": "
|
|
186
|
+
"schemas/v2/suspend-request.schema.json": "368d9932efb08f85b4520cac44b3c553876209f55bada93b5fcac93cc890b411",
|
|
187
187
|
"schemas/v2/tool-descriptor.schema.json": "8c98fb5e93bc649dff859d3d1dde8075db929efd6c49c496252d0a88cccc73e1",
|
|
188
188
|
"schemas/v2/trigger-event.schema.json": "710ecca8b3ecdad3a532a96768177f062192b24a589a4f798c7eb24bab64b30a",
|
|
189
189
|
"schemas/v2/trigger-subscription-registration.schema.json": "04bc314a07c7e8b565577cb8df5821d968ce2af915900dfdccd4a24e928d20db",
|
|
@@ -204,49 +204,49 @@
|
|
|
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": "0c23e7ab67fa69cda05de86da9dee127e62d82045137fcecc1684d3201feaa97",
|
|
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": "dfdb7a8344316ec6b72e2e249736306cb19155f61180c5f13a44f57d51e803e8",
|
|
214
214
|
"spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
|
|
215
215
|
"spec/v1/migrations.json": "2efcd9064b2bc65a84a3b3d281aa86a91efd002690c1f4f14e8335c4a18194d1",
|
|
216
216
|
"spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
|
|
217
217
|
"spec/v1/operation-path-manifest.json": "fada0342815fb129c1ae61f1829bd6e34417717408ce86fcc54280f373c19e74",
|
|
218
218
|
"spec/v1/spec-gaps.json": "ea9612af55bea9dae3e82223d4f714243f8f590b0193f1188257b13491a38afc",
|
|
219
219
|
"spec/v2/README.md": "4fa067d377580495e60baf08a4eafc3214b8ca48d8fb270bf91fc5066fad7186",
|
|
220
|
-
"spec/v2/core/capabilities.md": "
|
|
221
|
-
"spec/v2/core/conformance.md": "
|
|
222
|
-
"spec/v2/core/connection-packs.md": "
|
|
223
|
-
"spec/v2/core/conversation.md": "
|
|
224
|
-
"spec/v2/core/errors.md": "
|
|
225
|
-
"spec/v2/core/events.md": "
|
|
226
|
-
"spec/v2/core/form-content-packs.md": "
|
|
220
|
+
"spec/v2/core/capabilities.md": "ad728e8a761153b55d036ece55043ff62d0982121e2e629e5e7cdf560fca3c03",
|
|
221
|
+
"spec/v2/core/conformance.md": "0cfceb926eed87055550a5c23e640210c795fc8cf9dd1b2544db0e2b3842c564",
|
|
222
|
+
"spec/v2/core/connection-packs.md": "1ee129d792c537bfe82393ccb92555d8e6ddc342b1aa781a13f101b27ec38171",
|
|
223
|
+
"spec/v2/core/conversation.md": "354fa57c73d11062e523a44aa75a6353c5c81aefaf306d30c42416a228c82c86",
|
|
224
|
+
"spec/v2/core/errors.md": "bcb62944d8a482b1b6d5ac08a692ad7e4aaadf6165746c7ba7fa39157be2a300",
|
|
225
|
+
"spec/v2/core/events.md": "604abb6f9e2259a04103e1cb76d728712c3701c0d84dd915d4dc2949c912ee5e",
|
|
226
|
+
"spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
|
|
227
227
|
"spec/v2/core/headers.md": "5cb1624fa63acc81992b6a6d842ec392cf7271aaf2f65d1f83c8c4fa286e6730",
|
|
228
228
|
"spec/v2/core/host-services.md": "15923cceb95cba148a32e0944f6a2d1d25e9cc36b0c169b67ee42d483bcac800",
|
|
229
229
|
"spec/v2/core/i18n.md": "846c6d2878fc8454c2ae0a1576f6b6e6c8958d47187a6c96cc5826ca3c3e2e91",
|
|
230
|
-
"spec/v2/core/idempotency.md": "
|
|
231
|
-
"spec/v2/core/identity.md": "
|
|
232
|
-
"spec/v2/core/interop.md": "
|
|
233
|
-
"spec/v2/core/interrupt.md": "
|
|
234
|
-
"spec/v2/core/node-pack-runtimes.md": "
|
|
235
|
-
"spec/v2/core/oauth.md": "
|
|
236
|
-
"spec/v2/core/overview.md": "
|
|
237
|
-
"spec/v2/core/packs.md": "
|
|
238
|
-
"spec/v2/core/persistence.md": "
|
|
239
|
-
"spec/v2/core/portability.md": "
|
|
240
|
-
"spec/v2/core/replay.md": "
|
|
241
|
-
"spec/v2/core/runs.md": "
|
|
242
|
-
"spec/v2/core/security-defaults.md": "
|
|
243
|
-
"spec/v2/core/tool-catalog.md": "
|
|
244
|
-
"spec/v2/core/versioning.md": "
|
|
245
|
-
"spec/v2/core/webhooks.md": "
|
|
246
|
-
"spec/v2/core/workflow-chain-packs.md": "
|
|
230
|
+
"spec/v2/core/idempotency.md": "2084d756789c1faf5121593fb39e67ca36a4c227178e175004742e403178ea49",
|
|
231
|
+
"spec/v2/core/identity.md": "2dceb1c2697015e4a4fa8a9b28f4fbd25fa44a76ca5a919c752e2a8163c819db",
|
|
232
|
+
"spec/v2/core/interop.md": "e72e25dff864c83b2980d7366b34054cffa072af0225821199f260f6228d260e",
|
|
233
|
+
"spec/v2/core/interrupt.md": "b4376fbbaaa0c7b0ca5df04d40049b487753f6736f8e54ed7d75b7f8563b2f72",
|
|
234
|
+
"spec/v2/core/node-pack-runtimes.md": "e1088cb69b8c3c67256c494063328916c2980ab1aa97a7063de25bab82fdb1e5",
|
|
235
|
+
"spec/v2/core/oauth.md": "c96483a44b62978c596945fbb7d7c863cf6056cd980fdb4cf4e97555e3e10b72",
|
|
236
|
+
"spec/v2/core/overview.md": "4087f171b00a3907551f508fec32fb9b0b3ccec8c0ac1b0c7c6d32cd2c0e3ff8",
|
|
237
|
+
"spec/v2/core/packs.md": "b472a583211d466d6ab8e00c414c225b246e678043fe6283a710c899fadde913",
|
|
238
|
+
"spec/v2/core/persistence.md": "711874f74cb08b03cd118d683056db10a063517762fcea73ec70feb5d983e6a4",
|
|
239
|
+
"spec/v2/core/portability.md": "87c4327f674f714fda6217fd79b99d2ba219ad47dc02f9751bb56c200fb2c17a",
|
|
240
|
+
"spec/v2/core/replay.md": "22cc8dc94cd145201f1269028fb0cb2abae2d988ee748205582edd59afd1da4d",
|
|
241
|
+
"spec/v2/core/runs.md": "157600d7dd2554856bba29e231e46489b5097cc0c0a0e74073549d410897a78b",
|
|
242
|
+
"spec/v2/core/security-defaults.md": "153884da7a2d54c30c81b5e649cfdef31e151b3a2a19dee1bc5a16c35d60a3aa",
|
|
243
|
+
"spec/v2/core/tool-catalog.md": "d16a9004418719c48301804aefa4d7ab6f41112a4ed83727f552aa1b92b418b0",
|
|
244
|
+
"spec/v2/core/versioning.md": "e3b3ab6d76e51035039a32173e9b412628a52c8fe7b16687ff58a2d0d983faa0",
|
|
245
|
+
"spec/v2/core/webhooks.md": "6fc2fb7d9a993a682765ebc68e5c5bb215046ee599234ca7a660465279444eff",
|
|
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": "7765c86f7a3fbdd5a80c6778fb22335f099dcc4caddf9747fb144c1f318a17f1",
|
|
250
250
|
"spec/v2/declaration.schema.json": "ef951633e4070899f64828f5cf1b5f4870270a0360f81dbb49b5b4d6cd407550",
|
|
251
251
|
"spec/v2/errors.json": "dc1a846abe3e888acb0ce4a33cf9d1fb98e41fcc8b49f42b3682fd65deca2eb2",
|
|
252
252
|
"spec/v2/errors.schema.json": "47404ad53e6147cf9017b813483712466573e419fb33e6c4b6c12d3e7deba1bc",
|
|
@@ -255,22 +255,22 @@
|
|
|
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": "4f9db1715219070fc57e06cc9b066f13aa130dd50f4869722d908e6e15720787",
|
|
258
|
-
"spec/v2/ext/canvas/README.md": "
|
|
259
|
-
"spec/v2/ext/chat/README.md": "
|
|
258
|
+
"spec/v2/ext/canvas/README.md": "0e91b68566d2be90319feedfaebe2cd2db0bd8f72fb59c958fa723c05e38023f",
|
|
259
|
+
"spec/v2/ext/chat/README.md": "f59b6706162abbfff96f8bccd4c0e1aeed721047cf62e9af58c875727a38d716",
|
|
260
260
|
"spec/v2/ext/coordination/README.md": "c7fe0884f52405fdd02c5f9ec309ac6b585685ee06ec5f338fff7acf03c07148",
|
|
261
|
-
"spec/v2/ext/dataIntegration/README.md": "
|
|
261
|
+
"spec/v2/ext/dataIntegration/README.md": "286dec8aa29e4d3225cbd8b3a361f5a438c3288e759966b9415ecbb99c576e70",
|
|
262
262
|
"spec/v2/ext/entities/README.md": "956d4a9a2aedb8cb9c79ce8145580480920474cc6943f0e33ede32d7b20414dc",
|
|
263
263
|
"spec/v2/ext/grpc-transport/README.md": "6ba378e3c6d1f2e3269b392cfdf0c40565ee9bfa259d1baaa9ee1d350e38e792",
|
|
264
|
-
"spec/v2/ext/kanban/README.md": "
|
|
265
|
-
"spec/v2/ext/knowledge/README.md": "
|
|
266
|
-
"spec/v2/ext/launchStudio/README.md": "
|
|
264
|
+
"spec/v2/ext/kanban/README.md": "bfc386dc0f874a4afa1e3ec6a2f99084b547dcce9bd363da3b8ebd8786b9c184",
|
|
265
|
+
"spec/v2/ext/knowledge/README.md": "cbe1f945a757791dedac0fd542a68c86c5b457778b831d58d9ae44a2baa270f2",
|
|
266
|
+
"spec/v2/ext/launchStudio/README.md": "c732bb855252c31ee1e971cbc2936f2ca29b234c111d548c648095634507babb",
|
|
267
267
|
"spec/v2/ext/messaging/README.md": "484cfa3091f89261dbdd48372afba441d3e6c16c3169a861b0ed7fc8c2902780",
|
|
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
271
|
"spec/v2/ext/restTransport/README.md": "acda51f1a973308841861a119def691db972f310c7b7250ab14f248e9c968585",
|
|
272
272
|
"spec/v2/ext/sandbox-runtime-notes/README.md": "0d1290fb1e20b2e35c0b15051541ab6546e4e2a6f693b4f912cb3f7d6a65e92c",
|
|
273
|
-
"spec/v2/ext/webResearch/README.md": "
|
|
273
|
+
"spec/v2/ext/webResearch/README.md": "b675e6f6646128d781b661f754c2393eed86e5935d16c3a22df582a5ce025b9b",
|
|
274
274
|
"spec/v2/facets/a2a.schema.json": "b68bf5e29e455e46c2ad7cfcccf5963730ec2310ff9db81884550d8df30fd6ef",
|
|
275
275
|
"spec/v2/facets/aiProviders.schema.json": "81fb39b6698564d9d07a0d10525ecb6360c152fe3f3a5ea0439112509ca130e2",
|
|
276
276
|
"spec/v2/facets/auditLogIntegrity.schema.json": "9a7f81320c8f940c6f4129bc7dd895a4063231c5458a717a08c2cbf9bb886c46",
|
|
@@ -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": "e52aaf9f10896088b2fcca2586ab05a477043275e7a3a48b769ffb4865e37c4a",
|
|
302
302
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
|
|
303
|
-
"spec/v2/surface-baseline.json": "
|
|
303
|
+
"spec/v2/surface-baseline.json": "d5b4e6c55a1d4bbe54241f9d0d020e7f9857f29912bb9f2ef910087b276be7e6"
|
|
304
304
|
},
|
|
305
|
-
"corpusCommit": "
|
|
305
|
+
"corpusCommit": "a99d0e2a2fd3000cff23cade553a6a45ad8f17a9"
|
|
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.43.
|
|
4
|
+
version: 2.43.1
|
|
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.
|
|
@@ -801,6 +801,62 @@ paths:
|
|
|
801
801
|
$ref: '#/components/responses/ValidationError'
|
|
802
802
|
'401':
|
|
803
803
|
$ref: '#/components/responses/Unauthenticated'
|
|
804
|
+
/conformance/seams/sample/webhooks/rotation-overlap:
|
|
805
|
+
post:
|
|
806
|
+
tags:
|
|
807
|
+
- Seams
|
|
808
|
+
operationId: shortenRotationOverlap
|
|
809
|
+
summary: Shorten the rotation overlap in progress on one subscription — RFC 0201 §E.20 witness
|
|
810
|
+
description: 'Sets the subscription''s `previousSecretExpiresAt` to the time the request was received plus `overlapSeconds`,
|
|
811
|
+
and reports the stored value. The seam MUST write the same stored expiry `rotateWebhookSecret` wrote and the production
|
|
812
|
+
signer reads; the signer MUST NOT branch on the seam, so which secret signs after the new expiry is production''s
|
|
813
|
+
decision. It changes only the overlap in progress and MUST NOT lengthen it: an expiry at or after the current one,
|
|
814
|
+
no overlap in progress, or a subscription that did not opt into `standard-webhooks-1` answers `400 validation_error`.
|
|
815
|
+
Tenant checks are those of `rotateWebhookSecret` (`403 id_tenant_mismatch` before the lookup; `404` when unknown).
|
|
816
|
+
OPTIONAL, and never served outside the seams profile; consumed by `v2-webhook-secret-rotation` when the advertised
|
|
817
|
+
overlap outlasts the wait cap. An unserved seam leaves that leg a partial witness, never `blocked`.'
|
|
818
|
+
requestBody:
|
|
819
|
+
required: true
|
|
820
|
+
content:
|
|
821
|
+
application/json:
|
|
822
|
+
schema:
|
|
823
|
+
type: object
|
|
824
|
+
additionalProperties: false
|
|
825
|
+
required:
|
|
826
|
+
- webhookId
|
|
827
|
+
- overlapSeconds
|
|
828
|
+
properties:
|
|
829
|
+
webhookId:
|
|
830
|
+
$ref: ../schemas/v2/ids.schema.json#/$defs/subscriptionId
|
|
831
|
+
overlapSeconds:
|
|
832
|
+
type: integer
|
|
833
|
+
minimum: 1
|
|
834
|
+
maximum: 60
|
|
835
|
+
responses:
|
|
836
|
+
'200':
|
|
837
|
+
description: The overlap is shortened.
|
|
838
|
+
content:
|
|
839
|
+
application/json:
|
|
840
|
+
schema:
|
|
841
|
+
type: object
|
|
842
|
+
additionalProperties: false
|
|
843
|
+
required:
|
|
844
|
+
- webhookId
|
|
845
|
+
- previousSecretExpiresAt
|
|
846
|
+
properties:
|
|
847
|
+
webhookId:
|
|
848
|
+
$ref: ../schemas/v2/ids.schema.json#/$defs/subscriptionId
|
|
849
|
+
previousSecretExpiresAt:
|
|
850
|
+
type: string
|
|
851
|
+
format: date-time
|
|
852
|
+
'400':
|
|
853
|
+
$ref: '#/components/responses/ValidationError'
|
|
854
|
+
'401':
|
|
855
|
+
$ref: '#/components/responses/Unauthenticated'
|
|
856
|
+
'403':
|
|
857
|
+
$ref: '#/components/responses/Forbidden'
|
|
858
|
+
'404':
|
|
859
|
+
$ref: '#/components/responses/NotFound'
|
|
804
860
|
/conformance/seams/sample/webhooks/receive:
|
|
805
861
|
post:
|
|
806
862
|
tags:
|
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.43.
|
|
4
|
+
version: 2.43.1
|
|
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.43.
|
|
4
|
+
version: 2.43.1
|
|
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.43.
|
|
3
|
+
"version": "2.43.1",
|
|
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": {
|
|
@@ -948,7 +948,8 @@
|
|
|
948
948
|
"properties": {
|
|
949
949
|
"code": {
|
|
950
950
|
"type": "string",
|
|
951
|
-
"minLength": 1
|
|
951
|
+
"minLength": 1,
|
|
952
|
+
"description": "A registered code from spec/v2/errors.json or a vendor code (errors.md §The registry, corrected by openwop#1698): the producer rule binds run.failed, node.failed and the snapshot error exactly as it binds an error response. Kept an open string on purpose — a consumer MUST accept an unknown code (overview.md §0) — so this schema does not enforce the rule; the suite's event-code-registered leg does."
|
|
952
953
|
},
|
|
953
954
|
"message": {
|
|
954
955
|
"type": "string",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"key": {
|
|
29
29
|
"type": "string",
|
|
30
|
-
"description": "
|
|
30
|
+
"description": "The deterministic re-entry key of ONE invocation of an interrupt (interrupt.md §Re-entry and resume values; corrected 2026-09-28 by openwop#1697). A host MUST derive it from at least the run, the node and the node's visit index; the spelling is host-defined. Recommended: ${runId}:${nodeId}:${interruptCount}, where interruptCount is the visit index — the number of interrupts this node raised in this run whose resolution was consumed before the current execution of the node began (plus an ordinal when one execution raises several). A replay or recovery of the same execution re-derives the same key and returns the recorded resume value; a later execution of the node (a loop back over an edge) derives a new key and raises a new interrupt.requested.",
|
|
31
31
|
"minLength": 1,
|
|
32
32
|
"maxLength": 256
|
|
33
33
|
},
|
|
@@ -299,7 +299,7 @@
|
|
|
299
299
|
"approve",
|
|
300
300
|
"escalate"
|
|
301
301
|
],
|
|
302
|
-
"description": "RFC 0186 §A.3 — the
|
|
302
|
+
"description": "RFC 0186 §A.3, corrected by RFC 0223 (openwop#1696) — a hint recorded with the gate; it does not choose the outcome. Whatever it holds, when a non-zero `timeoutMs` elapses with no resolution the host MUST resolve the gate rejected (`action: timeout`, `decision: rejected`, `reason: timeout`) and the node and run fail with `approval_rejected` unless an edge routes the failure (interrupt.md §Rejection). A timeout never grants a gate: a host MUST treat `approve` as `reject` and SHOULD NOT emit it (RFC 0093 ruled fail-open non-conformant; the value stays in the enum only so recorded payloads validate). `escalate` MAY notify a host-defined target but MUST NOT extend or grant the gate. Absent means `reject`. A `timeoutMs` of `0` means no timer. Two production hosts recorded this as a bare key on `approval.requested` (280 rows on one) before the seat existed. No JSON-Schema `default` is declared, because a validator that fills defaults would write a value the host never recorded."
|
|
303
303
|
},
|
|
304
304
|
"description": {
|
|
305
305
|
"type": "string"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"provenance": {
|
|
5
5
|
"suite": {
|
|
6
6
|
"package": "@openwop/openwop-conformance",
|
|
7
|
-
"version": "2.43.
|
|
7
|
+
"version": "2.43.1"
|
|
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": "7800a051d432c1244efd10dcee93b93ddde389aa6bfa843279d0ff6b9d734658"
|
|
425
425
|
}
|
package/spec/v1/gaps.json
CHANGED
|
@@ -9804,6 +9804,57 @@
|
|
|
9804
9804
|
}
|
|
9805
9805
|
]
|
|
9806
9806
|
},
|
|
9807
|
+
{
|
|
9808
|
+
"id": "openwop.gap.0171.6",
|
|
9809
|
+
"rfc": "0171",
|
|
9810
|
+
"local": "G6",
|
|
9811
|
+
"section": "§B.1",
|
|
9812
|
+
"surface": "openwop-app emits error codes on `run.failed` / `node.failed` that are neither registered nor vendor codes (22 codes measured at openwop-app `0cfb264c9`, e.g. `invalid_config`, `host_capability_missing`); `errors.md` §The registry binds them since openwop#1698.",
|
|
9813
|
+
"witness": "unclassified",
|
|
9814
|
+
"requirementId": null,
|
|
9815
|
+
"disposition": "externally-gated",
|
|
9816
|
+
"target": "openwop-app-code-remap",
|
|
9817
|
+
"sources": [
|
|
9818
|
+
{
|
|
9819
|
+
"file": "RFCS/registers/0171-v2-wire-envelope.gaps.md",
|
|
9820
|
+
"token": "G6"
|
|
9821
|
+
}
|
|
9822
|
+
]
|
|
9823
|
+
},
|
|
9824
|
+
{
|
|
9825
|
+
"id": "openwop.gap.0171.7",
|
|
9826
|
+
"rfc": "0171",
|
|
9827
|
+
"local": "G7",
|
|
9828
|
+
"section": "§B.1",
|
|
9829
|
+
"surface": "MyndHyve emits about 56 UPPER_CASE run-failure codes (normalised in `failurePayload`, measured at MyndHyve `fc3b007cf`) that are neither registered nor vendor codes.",
|
|
9830
|
+
"witness": "unclassified",
|
|
9831
|
+
"requirementId": null,
|
|
9832
|
+
"disposition": "externally-gated",
|
|
9833
|
+
"target": "myndhyve-code-remap",
|
|
9834
|
+
"sources": [
|
|
9835
|
+
{
|
|
9836
|
+
"file": "RFCS/registers/0171-v2-wire-envelope.gaps.md",
|
|
9837
|
+
"token": "G7"
|
|
9838
|
+
}
|
|
9839
|
+
]
|
|
9840
|
+
},
|
|
9841
|
+
{
|
|
9842
|
+
"id": "openwop.gap.0171.8",
|
|
9843
|
+
"rfc": "0171",
|
|
9844
|
+
"local": "G8",
|
|
9845
|
+
"section": "§B.1",
|
|
9846
|
+
"surface": "The v2 reference host emitted 3 unregistered run-failure codes (measured at openwop-examples `456dfaa`).",
|
|
9847
|
+
"witness": "unclassified",
|
|
9848
|
+
"requirementId": null,
|
|
9849
|
+
"disposition": "closed",
|
|
9850
|
+
"target": null,
|
|
9851
|
+
"sources": [
|
|
9852
|
+
{
|
|
9853
|
+
"file": "RFCS/registers/0171-v2-wire-envelope.gaps.md",
|
|
9854
|
+
"token": "G8"
|
|
9855
|
+
}
|
|
9856
|
+
]
|
|
9857
|
+
},
|
|
9807
9858
|
{
|
|
9808
9859
|
"id": "openwop.gap.0172.1",
|
|
9809
9860
|
"rfc": "0172",
|
|
@@ -13141,11 +13192,11 @@
|
|
|
13141
13192
|
"rfc": "0223",
|
|
13142
13193
|
"local": "G1",
|
|
13143
13194
|
"section": "§Conformance",
|
|
13144
|
-
"surface": "The routed case (a rejected gate followed over an `all_complete` or `any_failed` edge)
|
|
13195
|
+
"surface": "The routed case (a rejected gate followed over an `all_complete` or `any_failed` edge) had no witness.",
|
|
13145
13196
|
"witness": "unclassified",
|
|
13146
13197
|
"requirementId": null,
|
|
13147
|
-
"disposition": "
|
|
13148
|
-
"target":
|
|
13198
|
+
"disposition": "closed",
|
|
13199
|
+
"target": null,
|
|
13149
13200
|
"sources": [
|
|
13150
13201
|
{
|
|
13151
13202
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13158,11 +13209,11 @@
|
|
|
13158
13209
|
"rfc": "0223",
|
|
13159
13210
|
"local": "G2",
|
|
13160
13211
|
"section": "§Conformance",
|
|
13161
|
-
"surface": "The timeout disposition
|
|
13212
|
+
"surface": "The timeout disposition had no witness.",
|
|
13162
13213
|
"witness": "unclassified",
|
|
13163
13214
|
"requirementId": null,
|
|
13164
|
-
"disposition": "
|
|
13165
|
-
"target":
|
|
13215
|
+
"disposition": "closed",
|
|
13216
|
+
"target": null,
|
|
13166
13217
|
"sources": [
|
|
13167
13218
|
{
|
|
13168
13219
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13175,11 +13226,11 @@
|
|
|
13175
13226
|
"rfc": "0223",
|
|
13176
13227
|
"local": "G3",
|
|
13177
13228
|
"section": "§Implementation notes",
|
|
13178
|
-
"surface": "The v2 reference host
|
|
13229
|
+
"surface": "The v2 reference host did not record `action` on `interrupt.resolved`, did not emit `approval.rejected`, failed the run directly rather than through the scheduler, and had no timeout disposition.",
|
|
13179
13230
|
"witness": "unclassified",
|
|
13180
13231
|
"requirementId": null,
|
|
13181
|
-
"disposition": "
|
|
13182
|
-
"target":
|
|
13232
|
+
"disposition": "closed",
|
|
13233
|
+
"target": null,
|
|
13183
13234
|
"sources": [
|
|
13184
13235
|
{
|
|
13185
13236
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13243,11 +13294,11 @@
|
|
|
13243
13294
|
"rfc": "0223",
|
|
13244
13295
|
"local": "G7",
|
|
13245
13296
|
"section": "§Unresolved questions",
|
|
13246
|
-
"surface": "`onTimeout: approve` re-
|
|
13297
|
+
"surface": "`onTimeout: approve` re-legalised the fail-open timeout RFC 0093 ruled non-conformant.",
|
|
13247
13298
|
"witness": "unclassified",
|
|
13248
13299
|
"requirementId": null,
|
|
13249
|
-
"disposition": "
|
|
13250
|
-
"target":
|
|
13300
|
+
"disposition": "closed",
|
|
13301
|
+
"target": null,
|
|
13251
13302
|
"sources": [
|
|
13252
13303
|
{
|
|
13253
13304
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13260,11 +13311,11 @@
|
|
|
13260
13311
|
"rfc": "0223",
|
|
13261
13312
|
"local": "G8",
|
|
13262
13313
|
"section": "§A",
|
|
13263
|
-
"surface": "A gate re-entered over a reject loop
|
|
13314
|
+
"surface": "A gate re-entered over a reject loop collided with the one-interrupt-per-key rule (`interrupt.md` §Re-entry); v2 had no per-iteration key derivation.",
|
|
13264
13315
|
"witness": "unclassified",
|
|
13265
13316
|
"requirementId": null,
|
|
13266
|
-
"disposition": "
|
|
13267
|
-
"target":
|
|
13317
|
+
"disposition": "closed",
|
|
13318
|
+
"target": null,
|
|
13268
13319
|
"sources": [
|
|
13269
13320
|
{
|
|
13270
13321
|
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
@@ -13289,6 +13340,40 @@
|
|
|
13289
13340
|
}
|
|
13290
13341
|
]
|
|
13291
13342
|
},
|
|
13343
|
+
{
|
|
13344
|
+
"id": "openwop.gap.0223.9",
|
|
13345
|
+
"rfc": "0223",
|
|
13346
|
+
"local": "G9",
|
|
13347
|
+
"section": "§Conformance",
|
|
13348
|
+
"surface": "`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`.",
|
|
13349
|
+
"witness": "unclassified",
|
|
13350
|
+
"requirementId": null,
|
|
13351
|
+
"disposition": "externally-gated",
|
|
13352
|
+
"target": "host-routes-failed-gate-over-cycle",
|
|
13353
|
+
"sources": [
|
|
13354
|
+
{
|
|
13355
|
+
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
13356
|
+
"token": "G9"
|
|
13357
|
+
}
|
|
13358
|
+
]
|
|
13359
|
+
},
|
|
13360
|
+
{
|
|
13361
|
+
"id": "openwop.gap.0223.10",
|
|
13362
|
+
"rfc": "0223",
|
|
13363
|
+
"local": "G10",
|
|
13364
|
+
"section": "§Conformance",
|
|
13365
|
+
"surface": "`openwop.requirement.0223.timeout-rejects` and `0223.timeout-never-grants` have no MyndHyve witness: its `core.approvalGate` has no timeout configuration. On the v2 reference host both rows are negatively controlled (sweep sabotaged, or the `onTimeout` exclusion present) and pass locally with the fixtures registered. They need suite 2.43.1 and a new certified cut.",
|
|
13366
|
+
"witness": "unclassified",
|
|
13367
|
+
"requirementId": null,
|
|
13368
|
+
"disposition": "externally-gated",
|
|
13369
|
+
"target": "certified-cut-on-2.43.1",
|
|
13370
|
+
"sources": [
|
|
13371
|
+
{
|
|
13372
|
+
"file": "RFCS/registers/0223-approval-reject-disposition.gaps.md",
|
|
13373
|
+
"token": "G10"
|
|
13374
|
+
}
|
|
13375
|
+
]
|
|
13376
|
+
},
|
|
13292
13377
|
{
|
|
13293
13378
|
"id": "openwop.gap.0224.1",
|
|
13294
13379
|
"rfc": "0224",
|
|
@@ -467,4 +467,4 @@ A profile is a predicate over the declaration file, published in `spec/v2/profil
|
|
|
467
467
|
|
|
468
468
|
Rows `C2.1`–`C2.10` are `spec/v1/migrations.json` entries. `openwop.codemod.discovery-document-v2` transforms `C2.2`–`C2.8`: it drops a family with `supported: false` and promotes a dotted-only declared family to its plain key. Certification bundles naming `openwop-core` are never upgraded; they remain valid v1 evidence at their version.
|
|
469
469
|
|
|
470
|
-
*Sources:
|
|
470
|
+
*Sources: RFCs 0144, 0169, 0175, 0176, 0179, 0197. Each family's owning RFC is its `owningRfc` in [`declaration.json`](../declaration.json).*
|
|
@@ -145,4 +145,4 @@ This proves the arithmetic and that recovery ran once inside the bound. It does
|
|
|
145
145
|
|
|
146
146
|
An RFC whose acceptance criteria are corpus gates rather than host scenarios records the evidence label **corpus gate — no host tier** in its `Updated` line. For such an RFC the accepted-predicate check reads `(corpus)` rows from `evidence/corpus-ledger.json` and MUST NOT require a host bundle.
|
|
147
147
|
|
|
148
|
-
*Sources:
|
|
148
|
+
*Sources: RFCs 0158, 0168, 0212, 0216.*
|
|
@@ -35,4 +35,4 @@ A host advertising `connections.packsSupported` MUST resolve a connector's `auth
|
|
|
35
35
|
|
|
36
36
|
Both codes are in `spec/v2/errors.json`: `connection_provider_conflict` (two claimants for one bare id) and `connection_provider_unresolved` (no definition for the referenced id).
|
|
37
37
|
|
|
38
|
-
*Sources:
|
|
38
|
+
*Sources: RFCs 0095, 0177.*
|
|
@@ -23,4 +23,4 @@ A host advertising `channelPresence` MUST report present members as a subset of
|
|
|
23
23
|
|
|
24
24
|
A host that stamps model provenance on an agent turn MUST advertise `conversationTurnModelProvenance`. The stamp is non-secret and non-PII (provider and model identifiers only), and a host MUST NOT place prompt or completion content in it.
|
|
25
25
|
|
|
26
|
-
*Sources:
|
|
26
|
+
*Sources: RFCs 0101, 0109, 0110.*
|
package/spec/v2/core/errors.md
CHANGED
|
@@ -8,9 +8,9 @@ Every error a v2 host returns is a row in one registry. A client routes on `erro
|
|
|
8
8
|
|
|
9
9
|
## The registry
|
|
10
10
|
|
|
11
|
-
`spec/v2/errors.json` holds one row per code
|
|
11
|
+
`spec/v2/errors.json` holds one row per code, defined by `spec/v2/errors.schema.json`. It registers **108** codes. `schemas/v2/error-envelope.schema.json` is GENERATED from it and MUST NOT be edited by hand.
|
|
12
12
|
|
|
13
|
-
- A host MUST
|
|
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.
|
|
15
15
|
- The registry grows by [overview.md](overview.md) §0.
|
|
16
16
|
|
|
@@ -160,4 +160,4 @@ Code | Status
|
|
|
160
160
|
`pack_registry_unreachable` | 503
|
|
161
161
|
`runner_unavailable` | 503
|
|
162
162
|
|
|
163
|
-
*Sources:
|
|
163
|
+
*Sources: RFCs 0171, 0213.*
|
package/spec/v2/core/events.md
CHANGED
|
@@ -188,4 +188,4 @@ An absent `kinds` is not an empty catalog and is not an unrestricted one: a host
|
|
|
188
188
|
- **`feedback.targets`** names the resources an annotation may be attached to. A host MUST refuse an annotation whose target is outside the advertised set, and MUST NOT write it to the replayable run event log.
|
|
189
189
|
- **`providerUsage.costEstimates`** advertises that the host stamps a derived cost on the `provider.usage` event. That figure is an estimate from the host's own rate table; a consumer MUST NOT treat it as a billed amount.
|
|
190
190
|
|
|
191
|
-
*Sources:
|
|
191
|
+
*Sources: RFCs 0171, 0172, 0176, 0185, 0194, 0213.*
|
|
@@ -40,4 +40,4 @@ A form instantiated from a pack advertised through `forms.contentPacks` MUST be
|
|
|
40
40
|
|
|
41
41
|
The five spec-reserved `format` values are the core set. A host that recognizes a format SHOULD apply it; one that does not MUST ignore it and accept plain text. A host MUST ignore `format` on any type other than `text` or `longtext`.
|
|
42
42
|
|
|
43
|
-
*Sources:
|
|
43
|
+
*Sources: RFCs 0137, 0177.*
|
|
@@ -68,4 +68,4 @@ Layer 1 deduplicates the caller's request; Layer 2 deduplicates the run's effect
|
|
|
68
68
|
- `multiRegion` is the behavioural claim. When a host advertises it, both layers MUST hold across regions: an `Idempotency-Key` replayed into a second region MUST resolve to the first region's response rather than starting new work, and effect identity MUST collapse a duplicate effect wherever it is observed.
|
|
69
69
|
- A host that does not advertise `multiRegion` makes no cross-region promise, and a client MUST NOT infer one from `crossRegion` alone.
|
|
70
70
|
|
|
71
|
-
*Sources:
|
|
71
|
+
*Sources: RFCs 0170, 0171, 0173, 0213.*
|
package/spec/v2/core/identity.md
CHANGED
|
@@ -222,4 +222,4 @@ Every code below is a row with `retriable: false` and no `details` contract; the
|
|
|
222
222
|
|
|
223
223
|
The identity invariants are registered in `SECURITY/invariants.yaml` with their scenarios. An invariant without a witness is demoted from `protocol` tier.
|
|
224
224
|
|
|
225
|
-
*Sources:
|
|
225
|
+
*Sources: RFCs 0132, 0165, 0170, 0176, 0184, 0200, 0210.*
|
package/spec/v2/core/interop.md
CHANGED
|
@@ -162,4 +162,4 @@ A receiver prefers the in-message value, ignores a malformed one, and MUST NOT d
|
|
|
162
162
|
|
|
163
163
|
`SECURITY/threat-model-interop.md` is the threat model for this document; its invariants are rows of `SECURITY/invariants.yaml`. Peer identity and authorization at the boundary are governed by security-defaults.md; a peer MUST NOT gain authority the caller's Subject does not hold.
|
|
164
164
|
|
|
165
|
-
*Sources:
|
|
165
|
+
*Sources: RFCs 0175, 0198, 0207, 0208, 0211, 0214.*
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
## Why this exists
|
|
7
7
|
|
|
8
|
-
`interrupt` is
|
|
8
|
+
`interrupt` is how a run waits for something outside itself: a decision, an answer, an event, a conversation turn. Every kind shares one payload shape, event pair, resolve contract and token scheme, so a client that resolves an approval can resolve anything.
|
|
9
9
|
|
|
10
10
|
## Payload
|
|
11
11
|
|
|
@@ -35,8 +35,11 @@ Per-kind rules:
|
|
|
35
35
|
|
|
36
36
|
### Re-entry and resume values
|
|
37
37
|
|
|
38
|
-
`key` is the deterministic re-entry key.
|
|
38
|
+
`key` is the deterministic re-entry key of one invocation. A host MUST derive it from at least the run, the node and the node's visit index: the number of that node's interrupts in this run whose resolution was consumed before this execution began. Its spelling is host-defined.
|
|
39
39
|
|
|
40
|
+
- A replay or recovery of the same execution MUST re-derive the same key.
|
|
41
|
+
- A later execution of the node, reached over an edge, MUST derive a different key, MUST raise a new `interrupt.requested`, and MUST NOT return an earlier visit's `resumeValue`.
|
|
42
|
+
- Two interrupts raised in one execution MUST have distinct keys.
|
|
40
43
|
- A host MUST invoke an interrupt with key `K` at most once for the lifetime of the run.
|
|
41
44
|
- On recovery the engine MUST consult the event log, find the prior `interrupt.resolved`, and return the persisted `resumeValue` without emitting a second `interrupt.requested`.
|
|
42
45
|
- An in-memory cache MAY serve in-process replays but MUST NOT replace the event log for cross-process replays.
|
|
@@ -51,7 +54,7 @@ Every kind uses two registered types ([events.md](events.md)):
|
|
|
51
54
|
- `interrupt.requested` — the payload is the `InterruptPayload` verbatim.
|
|
52
55
|
- `interrupt.resolved` — the closed payload is `interruptResolved`. Resolving an approval-kind interrupt MUST record the applied `action` there, with the field §Approval requires.
|
|
53
56
|
|
|
54
|
-
The kind-specific `approval.*` and `clarification.*` types remain registered. Their payload definitions in `schemas/v2/run-event-payloads.schema.json` are `$ref` aliases of `interruptRequested` and `interruptResolved
|
|
57
|
+
The kind-specific `approval.*` and `clarification.*` types remain registered. Their payload definitions in `schemas/v2/run-event-payloads.schema.json` are `$ref` aliases of `interruptRequested` and `interruptResolved`. A host emitting `interrupt.requested` SHOULD also emit the kind-specific type until its consumers migrate.
|
|
55
58
|
|
|
56
59
|
Both events are durable and appear in the `updates` and `debug` stream modes. While suspended, `RunSnapshot.currentNodeId` names the node and `status` is `waiting-approval`, `waiting-input` or `waiting-external`.
|
|
57
60
|
|
|
@@ -115,18 +118,18 @@ The token grammar and the `interrupt.tokenAlgs[]` / `kid` check are [identity.md
|
|
|
115
118
|
|
|
116
119
|
### Rejection
|
|
117
120
|
|
|
118
|
-
A `reject` exits the suspend. The host MUST record `action: "reject"` and `decision: "rejected"` on `interrupt.resolved`, and SHOULD also emit `approval.rejected`. The resume value
|
|
121
|
+
A `reject` exits the suspend. The host MUST record `action: "reject"` and `decision: "rejected"` on `interrupt.resolved`, and SHOULD also emit `approval.rejected`. The resume value returns to the raising node (§Re-entry and resume values).
|
|
119
122
|
|
|
120
|
-
- A node that does not turn the rejection into an output MUST fail with `approval_rejected`
|
|
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.
|
|
121
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`).
|
|
122
125
|
- When no such edge exists, the run MUST terminate `failed` with `run.failed.error.code` `approval_rejected` and `failedNodeId` naming the gate.
|
|
123
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`.
|
|
124
|
-
- When a non-zero `timeoutMs` elapses with no resolution
|
|
127
|
+
- When a non-zero `timeoutMs` elapses with no resolution, the host MUST resolve the gate rejected, recording `action: "timeout"`, `decision: "rejected"` and `reason: "timeout"`, whatever `onTimeout` holds, and MUST apply the rules above. A timeout MUST NOT grant a gate. A host MUST treat `onTimeout: "approve"` as `reject` and SHOULD NOT emit it. `escalate` MAY notify a host-defined target but MUST NOT extend or grant the gate. A host MUST NOT accept `timeout` on a resume request.
|
|
125
128
|
- On replay the failure MUST be derived from the recorded `interrupt.resolved`, never re-decided.
|
|
126
129
|
|
|
127
130
|
## Approver enforcement
|
|
128
131
|
|
|
129
|
-
|
|
132
|
+
The facet `spec/v2/facets/interrupt.schema.json` carries `tokenAlgs[]` (REQUIRED) and `refKinds[]` ⊆ `principal`, `group`, `role`.
|
|
130
133
|
|
|
131
134
|
- **`approversList`** (explicit principals) binds everywhere: a host advertising `interrupt` MUST refuse a resolver not in the list.
|
|
132
135
|
- **`approverGroupRefs`** binds only where `refKinds` includes `group`: the host MUST surface the field unchanged and MUST resolve and enforce its members as eligible approvers.
|
|
@@ -136,10 +139,10 @@ Enforcement is an obligation of the fields, not a discovery flag. The facet `spe
|
|
|
136
139
|
|
|
137
140
|
Eligibility binds every writer of the suspension record, not every route. A host whose durable store is writable by a principal other than the engine MUST enforce the same eligibility at the store, or MUST NOT expose the record to that principal for write.
|
|
138
141
|
|
|
139
|
-
Refs are opaque to the engine; the host resolves them
|
|
142
|
+
Refs are opaque to the engine; the host resolves them. Membership MUST be resolved at decision time and MUST NOT be re-resolved during replay or `forkRun`: the recorded eligibility decision is fixed history ([replay.md](replay.md)).
|
|
140
143
|
|
|
141
144
|
## During the v1 overlap
|
|
142
145
|
|
|
143
146
|
The v1 interrupt-token drain is [identity.md](identity.md) §4.
|
|
144
147
|
|
|
145
|
-
*Sources:
|
|
148
|
+
*Sources: RFCs 0170, 0171, 0173, 0187, 0196, 0223.*
|
|
@@ -31,4 +31,4 @@ It has no `packages[]`, `headers`, `variables` or `_meta`, so it carries no inst
|
|
|
31
31
|
- A host SHOULD NOT treat `name` as a verified identity: an inline record carries no proof of namespace ownership.
|
|
32
32
|
- A host that authenticates to the server does so through the node's `requiredCredentials` or `auth`.
|
|
33
33
|
|
|
34
|
-
*Sources:
|
|
34
|
+
*Sources: RFCs 0008, 0203.*
|
package/spec/v2/core/oauth.md
CHANGED
|
@@ -63,4 +63,4 @@ Then:
|
|
|
63
63
|
- `declined` fails the node with `connector_auth_declined`.
|
|
64
64
|
- A host that binds a node to one credential reference (for example, a connection) reads "resolves" as that reference resolving with the node's scopes, carries it as `credentialRef`, and still completes `connectUrl` only for the initiating Subject.
|
|
65
65
|
|
|
66
|
-
*Sources:
|
|
66
|
+
*Sources: RFCs 0046, 0047, 0199.*
|
package/spec/v2/core/overview.md
CHANGED
|
@@ -96,4 +96,4 @@ These rules bind any public conformance statement:
|
|
|
96
96
|
|
|
97
97
|
Every MUST, SHOULD, and MAY in `core/` is a requirement with an id in `requirements.json` and a `witness` from `witnessable-unaided | witnessable-gated | seam-gated | claims-check | negative-existence`. A seam-gated MUST is governed by [`conformance.md`](conformance.md) §"Witness class".
|
|
98
98
|
|
|
99
|
-
*Sources:
|
|
99
|
+
*Sources: RFCs 0155, 0167, 0168, 0169, 0171, 0174, 0190, 0197.*
|
package/spec/v2/core/packs.md
CHANGED
|
@@ -26,12 +26,12 @@ Each conjunct keeps its own refusal code. A mechanical ceiling bump is not a ver
|
|
|
26
26
|
|
|
27
27
|
## The `packs` capability
|
|
28
28
|
|
|
29
|
-
A host advertises `packs` when it serves the registry surface above
|
|
29
|
+
A host advertises `packs` when it serves the registry surface above:
|
|
30
30
|
|
|
31
31
|
- A host MUST NOT advertise `packs` unless it resolves pack references through a registry reachable from its discovery document.
|
|
32
|
-
- A client MUST treat an absent record as "
|
|
32
|
+
- A client MUST treat an absent record as "no registry resolution", not as an unknown. It says nothing about pack validation or execution, which `sandbox` and §"The engine range" bind.
|
|
33
33
|
|
|
34
|
-
`testMode` is DEPRECATED and MUST NOT be relied on by a client (
|
|
34
|
+
`testMode` is DEPRECATED and MUST NOT be relied on by a client (§"During the v1 overlap"). A host mounting a test catalog SHOULD advertise the seams profile instead, and MUST NOT treat `testMode` as a second way to claim one.
|
|
35
35
|
|
|
36
36
|
## The registry tree
|
|
37
37
|
|
|
@@ -118,4 +118,4 @@ A registry MUST validate submissions against vendored copies of these schemas pi
|
|
|
118
118
|
- The v1 registry tree is frozen through the overlap, behind the v2 tree.
|
|
119
119
|
- `testMode` advertises the v1 `/v1/packs-test/*` mirror, a conformance seam ([conformance.md §"The seams profile"](conformance.md)). It remains advertisable through the overlap and is removed at 3.0.
|
|
120
120
|
|
|
121
|
-
*Sources:
|
|
121
|
+
*Sources: RFCs 0177, 0212, 0222.*
|
|
@@ -143,4 +143,4 @@ A host MAY claim a qualification rung (`durable-single-instance`, `durable-multi
|
|
|
143
143
|
|
|
144
144
|
See also: [overview.md](overview.md), [events.md](events.md), [replay.md](replay.md), [identity.md](identity.md), [webhooks.md](webhooks.md).
|
|
145
145
|
|
|
146
|
-
*Sources:
|
|
146
|
+
*Sources: RFCs 0041, 0158, 0170, 0171, 0172, 0176, 0180, 0185, 0186, 0187.*
|
|
@@ -41,4 +41,4 @@ An applied import emits `import.applied` (`schemas/v2/run-event-payloads.schema.
|
|
|
41
41
|
|
|
42
42
|
No protocol path is defined for export or import: a host serves them on routes of its own. A host-private migration from an anonymous sandbox into a signed-in tenant fits this contract, because its response is a subset of the import outcome.
|
|
43
43
|
|
|
44
|
-
*Sources:
|
|
44
|
+
*Sources: RFCs 0043, 0096, 0098.*
|
package/spec/v2/core/replay.md
CHANGED
|
@@ -132,4 +132,4 @@ A host advertising `replay` MUST document retention for source snapshots, source
|
|
|
132
132
|
|
|
133
133
|
See also: events.md, runs.md, persistence.md, security-defaults.md.
|
|
134
134
|
|
|
135
|
-
*Sources:
|
|
135
|
+
*Sources: RFCs 0036, 0039, 0041, 0057, 0104, 0111, 0140, 0173, 0176, 0194.*
|
package/spec/v2/core/runs.md
CHANGED
|
@@ -264,4 +264,4 @@ A host that does not advertise `dataResidency` MAY ignore or reject a `residency
|
|
|
264
264
|
|
|
265
265
|
A non-terminal run inherited from v1 continues, or is cancelled `v1_pin_unsupported`, per [persistence.md](persistence.md) §"Runs pinned to v1".
|
|
266
266
|
|
|
267
|
-
*Sources:
|
|
267
|
+
*Sources: RFCs 0170, 0171, 0176, 0182.*
|
|
@@ -142,4 +142,4 @@ Rows `C6.1`–`C6.9` are `spec/v1/migrations.json` entries.
|
|
|
142
142
|
|
|
143
143
|
See also: identity.md, replay.md, webhooks.md, capabilities.md, conformance.md.
|
|
144
144
|
|
|
145
|
-
*Sources:
|
|
145
|
+
*Sources: RFCs 0150, 0163, 0164, 0170, 0173, 0214, 0218, 0224.*
|
|
@@ -42,4 +42,4 @@ A host advertising `toolCatalog.compactView` MUST answer `?view=compact` on both
|
|
|
42
42
|
|
|
43
43
|
A host advertising `toolCatalog.sessionLifecycle` MAY bracket calls with content-free `tool.session.opened` and `tool.session.closed`; a consumer MUST tolerate their absence.
|
|
44
44
|
|
|
45
|
-
*Sources:
|
|
45
|
+
*Sources: RFCs 0078, 0112, 0204.*
|
|
@@ -192,4 +192,4 @@ Every vendor namespace — capability records ([capabilities.md](capabilities.md
|
|
|
192
192
|
|
|
193
193
|
Rows `C5.1`–`C5.9` are `spec/v1/migrations.json` entries (`C5.2` is owned by `events.md`). The persisted-data disposition for each is `not-persisted`, except `C5.1` (legacy-stamped) and `C5.7` (never-upgraded).
|
|
194
194
|
|
|
195
|
-
*Sources:
|
|
195
|
+
*Sources: RFCs 0167, 0168, 0172, 0176, 0179, 0181, 0193, 0219.*
|
package/spec/v2/core/webhooks.md
CHANGED
|
@@ -124,4 +124,4 @@ At delivery time a host MUST re-resolve the hostname, validate every resolved ad
|
|
|
124
124
|
|
|
125
125
|
See also: events.md, replay.md, persistence.md, security-defaults.md.
|
|
126
126
|
|
|
127
|
-
*Sources:
|
|
127
|
+
*Sources: RFCs 0053, 0165, 0171, 0173, 0176, 0188, 0196, 0201, 0215, 0217.*
|
|
@@ -36,4 +36,4 @@ Fragment edges carry the same `condition` and `triggerRule` shapes as a top-leve
|
|
|
36
36
|
|
|
37
37
|
A host MUST carry both fields through expansion verbatim and MUST honor them on expanded edges as on authored ones. [form-content-packs.md](form-content-packs.md) reuses this operator set for field visibility.
|
|
38
38
|
|
|
39
|
-
*Sources:
|
|
39
|
+
*Sources: RFCs 0133, 0177.*
|
package/spec/v2/declaration.json
CHANGED
|
@@ -1822,7 +1822,7 @@
|
|
|
1822
1822
|
"witness": "claims-check",
|
|
1823
1823
|
"maturity": {
|
|
1824
1824
|
"technical": "experimental",
|
|
1825
|
-
"adoption": "
|
|
1825
|
+
"adoption": "single-witness"
|
|
1826
1826
|
},
|
|
1827
1827
|
"facets": [],
|
|
1828
1828
|
"floorScenarios": [],
|
|
@@ -1840,7 +1840,7 @@
|
|
|
1840
1840
|
"witness": "claims-check",
|
|
1841
1841
|
"maturity": {
|
|
1842
1842
|
"technical": "stable",
|
|
1843
|
-
"adoption": "
|
|
1843
|
+
"adoption": "multi-witness"
|
|
1844
1844
|
},
|
|
1845
1845
|
"facets": [],
|
|
1846
1846
|
"floorScenarios": [],
|
|
@@ -1875,8 +1875,8 @@
|
|
|
1875
1875
|
"extensionName": "data-integration",
|
|
1876
1876
|
"witness": "claims-check",
|
|
1877
1877
|
"maturity": {
|
|
1878
|
-
"technical": "
|
|
1879
|
-
"adoption": "
|
|
1878
|
+
"technical": "stable",
|
|
1879
|
+
"adoption": "single-witness"
|
|
1880
1880
|
},
|
|
1881
1881
|
"facets": [],
|
|
1882
1882
|
"floorScenarios": [],
|
|
@@ -1912,7 +1912,7 @@
|
|
|
1912
1912
|
"witness": "claims-check",
|
|
1913
1913
|
"maturity": {
|
|
1914
1914
|
"technical": "stable",
|
|
1915
|
-
"adoption": "
|
|
1915
|
+
"adoption": "multi-witness"
|
|
1916
1916
|
},
|
|
1917
1917
|
"facets": [],
|
|
1918
1918
|
"floorScenarios": [],
|
|
@@ -1930,7 +1930,7 @@
|
|
|
1930
1930
|
"witness": "claims-check",
|
|
1931
1931
|
"maturity": {
|
|
1932
1932
|
"technical": "stable",
|
|
1933
|
-
"adoption": "
|
|
1933
|
+
"adoption": "multi-witness"
|
|
1934
1934
|
},
|
|
1935
1935
|
"facets": [],
|
|
1936
1936
|
"floorScenarios": [],
|
|
@@ -1948,7 +1948,7 @@
|
|
|
1948
1948
|
"witness": "claims-check",
|
|
1949
1949
|
"maturity": {
|
|
1950
1950
|
"technical": "experimental",
|
|
1951
|
-
"adoption": "
|
|
1951
|
+
"adoption": "single-witness"
|
|
1952
1952
|
},
|
|
1953
1953
|
"facets": [],
|
|
1954
1954
|
"floorScenarios": [],
|
|
@@ -1984,7 +1984,7 @@
|
|
|
1984
1984
|
"witness": "claims-check",
|
|
1985
1985
|
"maturity": {
|
|
1986
1986
|
"technical": "stable",
|
|
1987
|
-
"adoption": "
|
|
1987
|
+
"adoption": "multi-witness"
|
|
1988
1988
|
},
|
|
1989
1989
|
"facets": [],
|
|
1990
1990
|
"floorScenarios": [],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
10
|
| **technical:** | `experimental` |
|
|
11
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `single-witness` |
|
|
12
12
|
| **peer-dependency id** | `canvas` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.canvas` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
10
|
| **technical:** | `stable` |
|
|
11
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `multi-witness` |
|
|
12
12
|
| **peer-dependency id** | `chat` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.chat` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# `dataIntegration` extension
|
|
2
2
|
|
|
3
|
-
> **Status:
|
|
3
|
+
> **Status: Stable.**
|
|
4
4
|
|
|
5
5
|
`dataIntegration` names typed data-source operations: fetches from configured external sources, transforms and run-scoped variables. 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** | `dataIntegration` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.data-integration` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
10
|
| **technical:** | `stable` |
|
|
11
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `multi-witness` |
|
|
12
12
|
| **peer-dependency id** | `kanban` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.kanban` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
10
|
| **technical:** | `stable` |
|
|
11
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `multi-witness` |
|
|
12
12
|
| **peer-dependency id** | `knowledge` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.knowledge` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
10
|
| **technical:** | `experimental` |
|
|
11
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `single-witness` |
|
|
12
12
|
| **peer-dependency id** | `launchStudio` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.launch-studio` |
|
|
14
14
|
| **declared facets** | none defined |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| **witness:** | `claims-check` |
|
|
10
10
|
| **technical:** | `stable` |
|
|
11
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `multi-witness` |
|
|
12
12
|
| **peer-dependency id** | `webResearch` |
|
|
13
13
|
| **advertised as** | `extensions.<org>.web-research` |
|
|
14
14
|
| **declared facets** | none defined |
|
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.43.
|
|
4
|
-
"corpusTag": "v2.43.
|
|
3
|
+
"version": "2.43.1",
|
|
4
|
+
"corpusTag": "v2.43.1",
|
|
5
5
|
"updated": "2026-09-27"
|
|
6
6
|
}
|