@openwop/spec-artifacts 2.45.2 → 2.45.3

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 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.45.2",
5
- "corpusTag": "v2.45.2",
4
+ "version": "2.45.3",
5
+ "corpusTag": "v2.45.3",
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
- "api/openapi.yaml": "69464bc0e1e71ef3b543a73d4fa4f67202343d2603c80af8033f6c3619ef1b30",
10
+ "api/openapi.yaml": "ad37a5a5c732ad46100fc03c3f4243fdd4f2976e330f02a8791b6b5b10a8a0c1",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "4eb20e64dbccf5e7ed1f3ffba7882f576bb1629f8523eaffae54d05809e1bc66",
13
- "api/v2/asyncapi.yaml": "910690735bc6bca78f51801854fa3e3ed9eb9a56f65441d594401fb19e684ba3",
14
- "api/v2/openapi.yaml": "b4fb04a206521719a1b13733914550d4d671e57c0c276122bedb88635fd8901c",
12
+ "api/seams-v2.yaml": "1f22ab7223019080332312b0fc9f7eb4c97bca2eebd57cab886acd1d6e3081d0",
13
+ "api/v2/asyncapi.yaml": "5b74151b1867c3c234203aa1f2dfb1ceeea216e013395e8696da02d4a8630412",
14
+ "api/v2/openapi.yaml": "05a07d9cd1e7f80da1e7044aace1073bf4ab584186cdd67979ba2664f90a80d0",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
17
17
  "schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
@@ -31,7 +31,7 @@
31
31
  "schemas/artifact-type-pack-manifest.schema.json": "60342fcb15eb7f3ab46271f0641409a30d3a4a8f318b1020c53070886b191252",
32
32
  "schemas/audit-verify-result.schema.json": "0d3a3088ac1c32f9df66d346c33d7adbd8037940dba040e14ea847565a1a14bd",
33
33
  "schemas/budget-policy.schema.json": "3d4fe30ae129fe136ab9ece395f2a2a42a76360786b1b9a1d5f1cbc753eb5b39",
34
- "schemas/capabilities.schema.json": "56b367074bce0f02ff87e0b84ccdf91856793d3d285e28f261656edba6352cc0",
34
+ "schemas/capabilities.schema.json": "d1d491248930e9b50ac6aca93a33cb1155eb997c4fbb2af0a940e8e889c76807",
35
35
  "schemas/certification-bundle-v2.schema.json": "2f85530dd04824a15810c94e96869362dee1e78396eca21fdd18e5501416bb7d",
36
36
  "schemas/channel-presence-payload.schema.json": "f9d0ef4219814c2b765baf3e68cbe5eea2cb42379f516a93a0459dcd5f7db47e",
37
37
  "schemas/channel-written-payload.schema.json": "54723a56bc5a35232f64544ca686ac1ac959a5fb05b32b2401facca6b3ef51a3",
@@ -95,7 +95,7 @@
95
95
  "schemas/suspend-request.schema.json": "7a90b622d5c619e3ffb5da696d272d6505e2780ab92ab631ac1b900f5daea908",
96
96
  "schemas/tool-descriptor.schema.json": "7f6adbae63003c1f1311f6a436f7f286542be62aa19a27b46730f2c2810857f7",
97
97
  "schemas/trigger-event.schema.json": "59d63b79dca3593f45d281776cbfe43ae4d85ee25519b82ad59f162a9efb592c",
98
- "schemas/trigger-subscription-registration.schema.json": "929d628bad08e1def696e47e9a148aba00fa801e28d49bbd0dc2360b08673435",
98
+ "schemas/trigger-subscription-registration.schema.json": "2ca680ca6ffdb3cfc5de7bb8b8db8c3ec8eab4b88b7c9f7fe5edaecc7cf61ad0",
99
99
  "schemas/trigger-subscription.schema.json": "4f7b067f20032073b140c4bb15dc9a9914c4f6421a252ff1ff261cbdd8edf270",
100
100
  "schemas/ui-plugin-message.schema.json": "346638babf1f8ea7b161cde75c0038b518cd2cc5bf0631772e20a9b74c96b5dd",
101
101
  "schemas/v2/a2a-task-state.schema.json": "1810363e2d9bddb5997923bdac4044cc17c6f46ec5a40515d2ff21d9c82c1ad9",
@@ -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": "1de68095db0beb5c7a4be629de26e79f62ebbe748a88d46f36e768edfd1f0d68",
119
- "schemas/v2/capabilities.schema.json": "d0b72f589b4e29ef69bd26e38a309aca1db2965c8441cae56c1dcc12c8d7152f",
119
+ "schemas/v2/capabilities.schema.json": "3792aa9d292229cf9b82c7306600a5dfdb63b3274523e0ed5dd4f952a04cb833",
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",
@@ -130,7 +130,7 @@
130
130
  "schemas/v2/conversation-turn.schema.json": "75bb6a4a03072a958feb5b34e2a1f40471e9e3996a81fa430b65717f0773c9a4",
131
131
  "schemas/v2/credential-provenance.schema.json": "f86b09e94b1c524dec7d1c6353965665ae8891e9517faef6e742d639c5578c99",
132
132
  "schemas/v2/credential-reference.schema.json": "ea699ce30f58fb2c32d4279158b3f730f70be7b2dc8c3037693a76e66eb3e001",
133
- "schemas/v2/debug-bundle.schema.json": "f2b72cd658a2072e24031fcd916ba3eb8afe5618c540ea0e7e5cc79ef29d5cab",
133
+ "schemas/v2/debug-bundle.schema.json": "0ec1e0bca9c0a359cc6cf3448e5200a1c3d3d5b1e5efaa6605231477daaf3fee",
134
134
  "schemas/v2/dispatch-config.schema.json": "5718c1ed7d95672e618bcb1f1da8e38180e144b12151307afc3aba1314dfcef0",
135
135
  "schemas/v2/effect-ledger-projection.schema.json": "0d118d385a43921118a76888449c5c3c5618eab1b80914b84a0a1b48d18822c1",
136
136
  "schemas/v2/effect-seam-manifest.schema.json": "197ef9944ab027a50d1b9352f317cbbc12c8ad955fdb14650fb90477052ffef0",
@@ -186,7 +186,7 @@
186
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
- "schemas/v2/trigger-subscription-registration.schema.json": "04bc314a07c7e8b565577cb8df5821d968ce2af915900dfdccd4a24e928d20db",
189
+ "schemas/v2/trigger-subscription-registration.schema.json": "5f7959f3e13f49399783e47f73101d6af95e5abccea1af2f0014ccbe3e51006c",
190
190
  "schemas/v2/trigger-subscription.schema.json": "1f5c286f68577d531ef9445ab2493f8d69ac9ee42313d28d758a0f00dd0fab36",
191
191
  "schemas/v2/ui-plugin-message.schema.json": "879d65867c01656b3962d64283e66364dcb8f626ad26c5fcf2d2d55a79ae0ce9",
192
192
  "schemas/v2/webhook-dead-letter-page.schema.json": "543f5ccc26d8f777684a037172ab7b9fdf70735e5394eeb42e5fa6569503f528",
@@ -204,13 +204,13 @@
204
204
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
205
205
  "spec/v1/alias-detectors.json": "0b2f28808ffe0b9d98a187775038c3406bb70919747a788a6e4f866e293ae6d3",
206
206
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
207
- "spec/v1/core-standard-manifest.json": "c948680f15a882c4bd97fa41235879d4103d3d3887ed294028ba9dfbb1d5d1a9",
207
+ "spec/v1/core-standard-manifest.json": "746278bbf9cf46840ba3bd5a85683251ddbc379466585f54e582754ce684d637",
208
208
  "spec/v1/deprecations.json": "a3293072ea951857395d05f0437264e88965f1e9019ff61c55bacfa9c1aaa17c",
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": "ac1fb9286c963aa19824292526a6f9726d9d2df5fe06695cc6afdfb33554edd2",
213
+ "spec/v1/gaps.json": "2705bd6f7be31392ba09da318e99d55905dd08aa80e76e1226cf8f1a85132d18",
214
214
  "spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
215
215
  "spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
216
216
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
@@ -227,7 +227,7 @@
227
227
  "spec/v2/core/execution.md": "8a0c9db1bbfb97c008ab9328b7333c1cc3318196e78bfbefb49e781bdf4f9d44",
228
228
  "spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
229
229
  "spec/v2/core/headers.md": "21d6c8220c3ac75b10e31c4cf6179abb539e2558af5006e40228d8c383ed5c92",
230
- "spec/v2/core/host-services.md": "18389b55286875922c26e13fbcd6c787fca2568f68b7e6f65176f1938404a218",
230
+ "spec/v2/core/host-services.md": "73f26ea32891044131d63f9861d2cbddccb5d08bf76e29e47afef9bb5b646791",
231
231
  "spec/v2/core/i18n.md": "882904b7d59f992ab1e5f7346167161a54cf665b8fee47e64a3862cf9133a580",
232
232
  "spec/v2/core/idempotency.md": "adbd317a6ebb57c2759c076297b31f67def9e391576bccd0bbea787b13e85872",
233
233
  "spec/v2/core/identity.md": "f61dc646f56fc1c07016c3acec9e8eb8c51051c55ecbedc986de793669fb6e6b",
@@ -240,16 +240,16 @@
240
240
  "spec/v2/core/persistence.md": "249a1de353f421cdf92b9006a13a10afdb002f4029eb6a13520cc95252edb2ec",
241
241
  "spec/v2/core/portability.md": "ab13a6ca43544b9a6a91edfb377ec680c768d14be841c84fb79125b231426891",
242
242
  "spec/v2/core/replay.md": "4a8b53325e18aa53400ece81168c76b4402b932e5e304a391754f293b126eabf",
243
- "spec/v2/core/runs.md": "18261bf0fff85101ee9547dd2cd9f06055f2095609dfd23e0f8fdbd1f1d2d0d0",
243
+ "spec/v2/core/runs.md": "991757ded9b3645bafad2344f4ccb75c7d79993bd80269f9dd3489193841d71b",
244
244
  "spec/v2/core/security-defaults.md": "887d8c4bc592094e3b931c23f1c2175c18ebbd47528b074016f9d2091bc513b2",
245
245
  "spec/v2/core/storage.md": "dc94b985847c1341c7a064f04a6010f0fdbe6c3ab3e555d4362878c81d764c18",
246
246
  "spec/v2/core/tool-catalog.md": "d16a9004418719c48301804aefa4d7ab6f41112a4ed83727f552aa1b92b418b0",
247
247
  "spec/v2/core/versioning.md": "b7acb0d8b77425cb53ea700e47ba790bf7506de600c398690e6ec5bb9c7a220e",
248
- "spec/v2/core/webhooks.md": "7b2606b2ebbeafd84ca052a5c4d2f392cade0b482fbb063acb0aeb38675f6ede",
248
+ "spec/v2/core/webhooks.md": "b0c08a3511b9319da7b0f7d83cddb15758acfc92e4c58c3604ac0f6b1ab13242",
249
249
  "spec/v2/core/workflow-chain-packs.md": "fdce7a8477e269950a2bac05ee6eddbd66eb0b670b464d00054f7196ec05d29c",
250
- "spec/v2/corrections.json": "59f647f4d22477f6c2b06dcf913b682dde5d51dd5e607a5d0cf648ab60864d6e",
250
+ "spec/v2/corrections.json": "3a8d93e33865b692d26a3b6bfd3819766e206b2e0c2a69669baa4bf833d05a49",
251
251
  "spec/v2/corrections.schema.json": "46bbffb954d13bd9995aebc912ceeb2544f7064331abf25fd6ab85c81a5cec94",
252
- "spec/v2/declaration.json": "24866c15908b3b70d96339dd852187ba908ddf65f90fad1d566ba6df5881aa48",
252
+ "spec/v2/declaration.json": "967f6db929fd7c4000d41a12d8b6d9f77bad90348de0dbc792b02f33e7026385",
253
253
  "spec/v2/declaration.schema.json": "ef951633e4070899f64828f5cf1b5f4870270a0360f81dbb49b5b4d6cd407550",
254
254
  "spec/v2/errors.json": "83f048b0a06952b4af6f125fb66c4212acab51056b411390f1010acd6ab9cdc0",
255
255
  "spec/v2/errors.schema.json": "47404ad53e6147cf9017b813483712466573e419fb33e6c4b6c12d3e7deba1bc",
@@ -260,7 +260,7 @@
260
260
  "spec/v2/ext/brand/README.md": "82989c018d7965bab029bcce7a67b1d76ffc433d08971a4cac91befcccc09438",
261
261
  "spec/v2/ext/canvas/README.md": "00ca0856e3a0146f1eeaec87209d450e2900ed2748dc7520cc60250a0d3ffbeb",
262
262
  "spec/v2/ext/chat/README.md": "f59b6706162abbfff96f8bccd4c0e1aeed721047cf62e9af58c875727a38d716",
263
- "spec/v2/ext/coordination/README.md": "c7fe0884f52405fdd02c5f9ec309ac6b585685ee06ec5f338fff7acf03c07148",
263
+ "spec/v2/ext/coordination/README.md": "7185af14aa0a2b554095ddbf10b0443b535fd28311a1836c6aa733b203030a9a",
264
264
  "spec/v2/ext/dataIntegration/README.md": "286dec8aa29e4d3225cbd8b3a361f5a438c3288e759966b9415ecbb99c576e70",
265
265
  "spec/v2/ext/entities/README.md": "956d4a9a2aedb8cb9c79ce8145580480920474cc6943f0e33ede32d7b20414dc",
266
266
  "spec/v2/ext/grpc-transport/README.md": "6ba378e3c6d1f2e3269b392cfdf0c40565ee9bfa259d1baaa9ee1d350e38e792",
@@ -303,9 +303,9 @@
303
303
  "spec/v2/path-manifest.json": "27c2307b84376b2f22bea4e2213fc7e33ef3bf8fd1d18039f7955edb00dc9c9a",
304
304
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
305
305
  "spec/v2/profiles.json": "180beb9ef2d161766fa23b2987e7e829851e3d316273147cf6a4a3f324befd6b",
306
- "spec/v2/release.json": "f042a3f11bc9eaffcd054a6f4b94e78931d6289191d2c8dde2f169a63478e3f1",
306
+ "spec/v2/release.json": "0befa21e6634c82cd3d6be9e487f79b7bf77fd3143ce3e0aed301230753b21bc",
307
307
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
308
- "spec/v2/surface-baseline.json": "18c9f38e3b596465128ceeee10cbdd17395672da5fe321db03ab4eee67bd50a4"
308
+ "spec/v2/surface-baseline.json": "fd44c977c6646c0bcbd85f9f5c4dce620bba29ee56b10cd077e3f71437e0276a"
309
309
  },
310
- "corpusCommit": "5bc14dd1ef9a0c6d8ab4bf220fbef47a74792212"
310
+ "corpusCommit": "f84011f0ce7ba068e53c1aa2b92d17fa97f5df5f"
311
311
  }
package/api/openapi.yaml CHANGED
@@ -276,6 +276,29 @@ paths:
276
276
  type: string
277
277
  minLength: 1
278
278
  description: RFC 0081 — the manifest agent the eval suite targets. Required when mode is `eval`.
279
+ runSecrets:
280
+ # RFC 0229 §A — top-level, never part of RunOptions (RunOptions are
281
+ # persisted, surfaced on the snapshot and carried by a fork).
282
+ # Bounds beyond the grammar (at most `secrets.runSecrets.maxEntries`
283
+ # entries, each `ref` once) are host-checked: `400 validation_error`.
284
+ type: array
285
+ minItems: 1
286
+ description: Run-supplied secrets. Accepted only by a host advertising `capabilities.secrets.runSecrets`; a client MUST NOT send it to any other host. A `run:` ref resolves only within the run that supplied it, and no value is ever echoed, logged or folded into a persisted digest (the idempotency request digest is computed without it).
287
+ items:
288
+ # Closed per entry with unevaluatedProperties (RFC 0094 §A keeps
289
+ # the additionalProperties closure out of this allOf body entirely).
290
+ type: object
291
+ unevaluatedProperties: false
292
+ required: [ref, value]
293
+ properties:
294
+ ref:
295
+ type: string
296
+ pattern: '^run:[A-Za-z0-9_.-]{1,64}$'
297
+ value:
298
+ type: string
299
+ minLength: 16
300
+ maxLength: 4096
301
+ writeOnly: true
279
302
  if:
280
303
  properties: { mode: { const: eval } }
281
304
  required: [mode]
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.45.2
4
+ version: 2.45.3
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.
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.45.2
4
+ version: 2.45.3
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`.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.45.2
4
+ version: 2.45.3
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
@@ -249,6 +249,28 @@ paths:
249
249
  type: string
250
250
  minLength: 1
251
251
  description: The manifest agent the eval suite targets. Required when mode is `eval`.
252
+ runSecrets:
253
+ type: array
254
+ minItems: 1
255
+ description: Run-supplied secrets. Accepted only by a host advertising `capabilities.secrets.runSecrets`;
256
+ a client MUST NOT send it to any other host. A `run:` ref resolves only within the run that supplied
257
+ it, and no value is ever echoed, logged or folded into a persisted digest (the idempotency request digest
258
+ is computed without it).
259
+ items:
260
+ type: object
261
+ unevaluatedProperties: false
262
+ required:
263
+ - ref
264
+ - value
265
+ properties:
266
+ ref:
267
+ type: string
268
+ pattern: ^run:[A-Za-z0-9_.-]{1,64}$
269
+ value:
270
+ type: string
271
+ minLength: 16
272
+ maxLength: 4096
273
+ writeOnly: true
252
274
  if:
253
275
  properties:
254
276
  mode:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.45.2",
3
+ "version": "2.45.3",
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": {
@@ -561,9 +561,42 @@
561
561
  "host-managed"
562
562
  ],
563
563
  "description": "Resolution mode. v1.x supports only `host-managed` (clients reference stored secrets via opaque ids); reserved for future modes."
564
+ },
565
+ "runSecrets": {
566
+ "type": "object",
567
+ "additionalProperties": false,
568
+ "required": [
569
+ "maxEntries"
570
+ ],
571
+ "properties": {
572
+ "maxEntries": {
573
+ "type": "integer",
574
+ "minimum": 1,
575
+ "description": "The most `{ ref, value }` entries one `createRun` may carry in `runSecrets`."
576
+ }
577
+ },
578
+ "description": "RFC 0229 — the host accepts run-supplied secrets: a top-level `runSecrets` array of `{ ref, value }` on `createRun`, each `ref` in the reserved `run:` namespace, resolvable only by the run that supplied it. Absent means `createRun` does not accept `runSecrets`, and a client MUST NOT send it. A host advertising it MUST also list `run` in `scopes`, MUST execute the node type `core.secret.witness`, and MUST advertise the fixture `openwop-secrets-run-witness`."
564
579
  }
565
580
  },
566
- "additionalProperties": false
581
+ "additionalProperties": false,
582
+ "allOf": [
583
+ {
584
+ "if": {
585
+ "required": [
586
+ "runSecrets"
587
+ ]
588
+ },
589
+ "then": {
590
+ "properties": {
591
+ "scopes": {
592
+ "contains": {
593
+ "const": "run"
594
+ }
595
+ }
596
+ }
597
+ }
598
+ }
599
+ ]
567
600
  },
568
601
  "connections": {
569
602
  "type": "object",
@@ -2888,6 +2921,12 @@
2888
2921
  },
2889
2922
  "description": "Which source-authenticity checks the host performs. An advertised check MUST actually be performed (RFC 0099 §F.3 / UQ1)."
2890
2923
  },
2924
+ "inboundSigning": {
2925
+ "type": "array",
2926
+ "uniqueItems": true,
2927
+ "items": { "type": "string", "enum": ["standard-webhooks-1"] },
2928
+ "description": "RFC 0230. Sender-facing ingest schemes this host implements for `webhook` subscriptions. `standard-webhooks-1`: a sender signs the raw body with the Standard Webhooks headers under the secret returned once at registration; the signature authenticates it (no OpenWOP credential on `ingestUrl`), `webhook-id` is the inbound identity dedup keys on, and the ingest answers 202 delivered / 200 duplicate / 401 signature_invalid / 409 subscription_not_active."
2929
+ },
2891
2930
  "registrationEndpoint": {
2892
2931
  "type": "boolean",
2893
2932
  "description": "`true` ⇒ the host serves `POST /v1/trigger-subscriptions` (RFC 0099 §F.2) for portable external-event subscription creation."
@@ -34,7 +34,7 @@
34
34
  "verification": {
35
35
  "type": "object",
36
36
  "additionalProperties": false,
37
- "description": "Source-authenticity policy. The host MUST verify per this policy BEFORE delivery and stamp `TriggerEvent.verified`; an event failing a `required` verification MUST NOT start a run (it transitions `trigger.delivery.attempted{outcome:'dead-lettered'}` with `trigger.subscription.state.changed.reason:'signature-invalid'`).",
37
+ "description": "Source-authenticity policy. The host MUST verify per this policy BEFORE delivery and stamp `TriggerEvent.verified`; an event failing a `required` verification MUST NOT start a run: that delivery is recorded as `trigger.delivery.attempted{outcome:'dead-lettered'}`. A refused event MUST NOT change the subscription's state or emit a subscription state-change event (trigger-bridge §F.2, corrected 2026-09-30).",
38
38
  "properties": {
39
39
  "mode": {
40
40
  "type": "string",
@@ -1241,6 +1241,21 @@
1241
1241
  "host-managed"
1242
1242
  ],
1243
1243
  "description": "Resolution mode. v1.x supports only `host-managed` (clients reference stored secrets via opaque ids); reserved for future modes."
1244
+ },
1245
+ "runSecrets": {
1246
+ "type": "object",
1247
+ "additionalProperties": false,
1248
+ "required": [
1249
+ "maxEntries"
1250
+ ],
1251
+ "properties": {
1252
+ "maxEntries": {
1253
+ "type": "integer",
1254
+ "minimum": 1,
1255
+ "description": "The most `{ ref, value }` entries one `createRun` may carry in `runSecrets`."
1256
+ }
1257
+ },
1258
+ "description": "RFC 0229 — the host accepts run-supplied secrets: a top-level `runSecrets` array of `{ ref, value }` on `createRun`, each `ref` in the reserved `run:` namespace, resolvable only by the run that supplied it. Absent means `createRun` does not accept `runSecrets`, and a client MUST NOT send it. A host advertising it MUST also list `run` in `scopes`, MUST execute the node type `core.secret.witness`, and MUST advertise the fixture `openwop-secrets-run-witness`."
1244
1259
  }
1245
1260
  },
1246
1261
  "allOf": [
@@ -1276,6 +1291,22 @@
1276
1291
  "until"
1277
1292
  ]
1278
1293
  }
1294
+ },
1295
+ {
1296
+ "if": {
1297
+ "required": [
1298
+ "runSecrets"
1299
+ ]
1300
+ },
1301
+ "then": {
1302
+ "properties": {
1303
+ "scopes": {
1304
+ "contains": {
1305
+ "const": "run"
1306
+ }
1307
+ }
1308
+ }
1309
+ }
1279
1310
  }
1280
1311
  ],
1281
1312
  "description": "core/capabilities.md#secrets — witness: witnessable-gated; maturity experimental/none",
@@ -5547,6 +5578,17 @@
5547
5578
  },
5548
5579
  "description": "Which source-authenticity checks the host performs. An advertised check MUST actually be performed (RFC 0099 §F.3 / UQ1)."
5549
5580
  },
5581
+ "inboundSigning": {
5582
+ "type": "array",
5583
+ "uniqueItems": true,
5584
+ "items": {
5585
+ "type": "string",
5586
+ "enum": [
5587
+ "standard-webhooks-1"
5588
+ ]
5589
+ },
5590
+ "description": "RFC 0230. Sender-facing ingest schemes this host implements for `webhook` subscriptions. `standard-webhooks-1`: a sender signs the raw body with the Standard Webhooks headers under the secret returned once at registration; the signature authenticates it (no OpenWOP credential on `ingestUrl`), `webhook-id` is the inbound identity dedup keys on, and the ingest answers 202 delivered / 200 duplicate / 401 signature_invalid / 409 subscription_not_active."
5591
+ },
5550
5592
  "registrationEndpoint": {
5551
5593
  "type": "boolean",
5552
5594
  "description": "`true` ⇒ the host serves `POST /trigger-subscriptions` (RFC 0099 §F.2) for portable external-event subscription creation."
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openwop.dev/spec/v2/debug-bundle.schema.json",
4
4
  "title": "RunDebugBundle",
5
- "description": "Portable JSON export of a single run's diagnostic state. See spec/v2/core/conformance.md \u00a7Production profile. Additive over v1 per COMPATIBILITY.md \u00a72.1: optional endpoint; hosts MAY omit.",
5
+ "description": "Portable JSON export of a single run's diagnostic state. See spec/v2/core/conformance.md \u00a7Production profile. The endpoint is optional; hosts MAY omit it.",
6
6
  "type": "object",
7
7
  "required": [
8
8
  "bundleVersion",
@@ -54,7 +54,7 @@
54
54
  "verification": {
55
55
  "type": "object",
56
56
  "additionalProperties": false,
57
- "description": "Source-authenticity policy. The host MUST verify per this policy BEFORE delivery and stamp `TriggerEvent.verified`; an event failing a `required` verification MUST NOT start a run (it transitions `trigger.delivery.attempted{outcome:'dead-lettered'}` with `trigger.subscription.state.changed.reason:'signature-invalid'`).",
57
+ "description": "Source-authenticity policy. The host MUST verify per this policy BEFORE delivery and stamp `TriggerEvent.verified`; an event failing a `required` verification MUST NOT start a run: that delivery is recorded as `trigger.delivery.attempted{outcome:'dead-lettered'}`. A refused event MUST NOT change the subscription's state or emit a subscription state-change event (trigger-bridge §F.2, corrected 2026-09-30).",
58
58
  "properties": {
59
59
  "mode": {
60
60
  "type": "string",
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.45.2"
7
+ "version": "2.45.3"
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": "325af93bfef2ba6fc244a4e890a553f694ce3832b7993fcef1c613b20ff6ad01"
424
+ "digest": "47dc9eb354b06d4b7b51d2e463f6d790f1b2127aa88566c1d67b29622fd85df6"
425
425
  }
package/spec/v1/gaps.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "./gaps.schema.json",
3
3
  "version": 1,
4
- "updated": "2026-09-30",
4
+ "updated": "2026-10-01",
5
5
  "witnessClasses": [
6
6
  "witnessable-unaided",
7
7
  "witnessable-gated",
@@ -13195,8 +13195,8 @@
13195
13195
  "surface": "`brand`, `canvas`, `coordination` and `launchStudio` have no tier-2 host. MyndHyve's executors for them run in the browser engine or on `canvas-runtime`, which does no OpenWOP version negotiation. `coordination`'s vote/consensus nodes need server-side agent dispatch.",
13196
13196
  "witness": "unclassified",
13197
13197
  "requirementId": null,
13198
- "disposition": "externally-gated",
13199
- "target": "tier-2-host-serves-family",
13198
+ "disposition": "closed",
13199
+ "target": null,
13200
13200
  "sources": [
13201
13201
  {
13202
13202
  "file": "RFCS/registers/0220-ext-families-graduate-on-evidence.gaps.md",
@@ -13680,6 +13680,125 @@
13680
13680
  }
13681
13681
  ]
13682
13682
  },
13683
+ {
13684
+ "id": "openwop.gap.0229.1",
13685
+ "rfc": "0229",
13686
+ "local": "G1",
13687
+ "section": "§A",
13688
+ "surface": "Where `runSecrets` sits on `createRun`: top-level (proposed; keeps secret material out of `configurable`, which hosts persist and echo) or `configurable.runSecrets` (what one production host accepts today).",
13689
+ "witness": "unclassified",
13690
+ "requirementId": null,
13691
+ "disposition": "closed",
13692
+ "target": null,
13693
+ "sources": [
13694
+ {
13695
+ "file": "RFCS/registers/0229-production-safe-secrets-witness.gaps.md",
13696
+ "token": "G1"
13697
+ }
13698
+ ]
13699
+ },
13700
+ {
13701
+ "id": "openwop.gap.0229.2",
13702
+ "rfc": "0229",
13703
+ "local": "G2",
13704
+ "section": "§E, §F",
13705
+ "surface": "No host implements `runSecrets` with the `run:` binding, `core.secret.witness` and the fixture, so the three requirement ids have no witness.",
13706
+ "witness": "unclassified",
13707
+ "requirementId": null,
13708
+ "disposition": "externally-gated",
13709
+ "target": "host-implements-run-witness",
13710
+ "sources": [
13711
+ {
13712
+ "file": "RFCS/registers/0229-production-safe-secrets-witness.gaps.md",
13713
+ "token": "G2"
13714
+ }
13715
+ ]
13716
+ },
13717
+ {
13718
+ "id": "openwop.gap.0229.3",
13719
+ "rfc": "0229",
13720
+ "local": "G3",
13721
+ "section": "§A.4, §A.6",
13722
+ "surface": "The value is neither stored in cleartext nor logged, but both are unwitnessable from outside: storage and host logs are not protocol surfaces.",
13723
+ "witness": "unclassified",
13724
+ "requirementId": null,
13725
+ "disposition": "carried",
13726
+ "target": "openwop.gap.0229.3",
13727
+ "sources": [
13728
+ {
13729
+ "file": "RFCS/registers/0229-production-safe-secrets-witness.gaps.md",
13730
+ "token": "G3"
13731
+ }
13732
+ ]
13733
+ },
13734
+ {
13735
+ "id": "openwop.gap.0229.4",
13736
+ "rfc": "0229",
13737
+ "local": "G4",
13738
+ "section": "§F",
13739
+ "surface": "Proof of *use* (an egress carrying the value to a suite-owned receiver), beyond proof of resolution.",
13740
+ "witness": "unclassified",
13741
+ "requirementId": null,
13742
+ "disposition": "carried",
13743
+ "target": "openwop.gap.0229.4",
13744
+ "sources": [
13745
+ {
13746
+ "file": "RFCS/registers/0229-production-safe-secrets-witness.gaps.md",
13747
+ "token": "G4"
13748
+ }
13749
+ ]
13750
+ },
13751
+ {
13752
+ "id": "openwop.gap.0229.5",
13753
+ "rfc": "0229",
13754
+ "local": "G5",
13755
+ "section": "§E",
13756
+ "surface": "The suite's floor table has no any-of group, so the v1 `openwop-secrets` floor cannot yet name two alternative scenarios.",
13757
+ "witness": "unclassified",
13758
+ "requirementId": null,
13759
+ "disposition": "closed",
13760
+ "target": null,
13761
+ "sources": [
13762
+ {
13763
+ "file": "RFCS/registers/0229-production-safe-secrets-witness.gaps.md",
13764
+ "token": "G5"
13765
+ }
13766
+ ]
13767
+ },
13768
+ {
13769
+ "id": "openwop.gap.0230.1",
13770
+ "rfc": "0230",
13771
+ "local": "G1",
13772
+ "section": "§Conformance",
13773
+ "surface": "No scenario drives the normative-surface ingest path yet. `trigger-bridge-delivery.test.ts` still witnesses only through the host seams.",
13774
+ "witness": "unclassified",
13775
+ "requirementId": null,
13776
+ "disposition": "carried",
13777
+ "target": "openwop.gap.0230.1",
13778
+ "sources": [
13779
+ {
13780
+ "file": "RFCS/registers/0230-inbound-webhook-ingest-contract.gaps.md",
13781
+ "token": "G1"
13782
+ }
13783
+ ]
13784
+ },
13785
+ {
13786
+ "id": "openwop.gap.0230.2",
13787
+ "rfc": "0230",
13788
+ "local": "G2",
13789
+ "section": "§Compatibility",
13790
+ "surface": "No host advertises `inboundSigning` yet. openwop-app serves an ingest route with a different contract (OpenWOP-credentialed, wrapped body, 200/422).",
13791
+ "witness": "unclassified",
13792
+ "requirementId": null,
13793
+ "disposition": "carried",
13794
+ "target": "openwop.gap.0230.2",
13795
+ "sources": [
13796
+ {
13797
+ "file": "RFCS/registers/0230-inbound-webhook-ingest-contract.gaps.md",
13798
+ "token": "G2"
13799
+ }
13800
+ ]
13801
+ },
13683
13802
  {
13684
13803
  "id": "openwop.gap.spec.a2a-integration.g1",
13685
13804
  "rfc": "0152",
@@ -109,6 +109,22 @@ A host offering `resolveInPack` MUST expose `ctx.secrets.resolve({ ref, purpose
109
109
 
110
110
  A pack MUST pass a non-empty `purpose`, which the host audits. The pack MUST NOT log the plaintext, keep it past the consuming call, or pass it to any other `ctx` method, and MUST treat it as run input that may differ between runs.
111
111
 
112
+ ### Run-supplied secrets
113
+
114
+ A host advertising `runSecrets: { maxEntries }` accepts `runSecrets` on `createRun` ([runs.md](runs.md) §Create): an array of `{ ref, value }`. It MUST also list `run` in `scopes`. A client MUST NOT send `runSecrets` to a host that does not advertise it.
115
+
116
+ - **Bounds.** `ref` MUST match `^run:[A-Za-z0-9_.-]{1,64}$`, and `value` is a string of 16 to 4096 characters. The array holds at most `maxEntries` entries, each `ref` once. A request that breaks any of these MUST be refused `400 validation_error`, naming the field and never the value.
117
+ - **Bound to the run.** A `run:` ref MUST resolve only to a value in the `runSecrets` of the run resolving it, never from another run, a user, tenant, workspace, the platform or the process environment. An unsupplied `run:` ref MUST fail `credential_not_found`. A ref without the `run:` prefix MUST NOT resolve to a `runSecrets` value.
118
+ - **Lifetime.** The host MUST NOT write a value to any store an operator or client can read in cleartext, and MUST discard it by the time the run is terminal. A fork does not inherit it, so a `run:` ref in the fork fails `credential_not_found`.
119
+ - **Redaction.** A value is a resolved run-scoped secret, and every redaction rule of this section and of §`memory` binds it. The host MUST NOT echo it on any response, the `createRun` answer and the snapshot included; a read MAY return the refs. It MUST NOT log the request's values.
120
+ - **No digest.** A value MUST NOT enter any hash, digest, fingerprint or cache key the host persists or derives from the request, including any replay, witness or audit digest. The idempotency request digest ([idempotency.md](idempotency.md)) is computed with `runSecrets` removed. A same-key retry that differs only there compares equal, is answered as any duplicate is, and its values are discarded unused.
121
+
122
+ A host advertising `runSecrets` MUST execute the node type `core.secret.witness` and MUST advertise the fixture `openwop-secrets-run-witness`. The node's configuration is `{ ref, expectedSha256 }`.
123
+
124
+ - A `ref` without the `run:` prefix MUST fail `credential_forbidden` without resolving anything.
125
+ - Otherwise the node resolves `ref` under the rules above and outputs `{ matched }`: whether the lowercase-hex SHA-256 of the value's UTF-8 bytes equals `expectedSha256`.
126
+ - It MUST NOT output, log or emit the value, its digest, its length, or any other function of it beyond `matched`.
127
+
112
128
  ## `modelCapabilities`
113
129
 
114
130
  `modelCapabilities.advertised` lists the capability identifiers the active model offers; a host-private identifier MUST be prefixed `x-host-<host>-`.
@@ -198,4 +214,4 @@ A host advertising `memory` serves agent memory (`schemas/v2/memory-entry.schema
198
214
  - **Distillation runs.** A distillation run MUST read the ref's snapshot, MUST NOT re-expose a redacted secret at any recursion level, and MUST write an immutable, addressable archive, byte-stable per source set and budget, kept for `archiveRetention`. Under `indexEmitted` it updates `MEMORY-INDEX.json`, and a `.md` sibling MAY accompany it.
199
215
  - **Degraded agents.** When an agent's `memoryShape` needs a dimension the host lacks, its inventory entry MUST set `memoryDegraded` and `degradedMemoryDimensions`; the agent MAY still dispatch. A `role: skill` manifest MUST keep `memoryShape` scratchpad-only, enforced by schema.
200
216
 
201
- *Sources: RFCs 0004, 0012, 0017, 0027, 0028, 0029, 0031, 0048, 0052, 0055, 0057, 0059, 0062, 0064, 0067, 0076, 0079, 0080, 0091, 0105, 0106, 0108, 0113, 0116, 0121, 0131, 0144, 0228.*
217
+ *Sources: RFCs 0004, 0012, 0017, 0027, 0028, 0029, 0031, 0048, 0052, 0055, 0057, 0059, 0062, 0064, 0067, 0076, 0079, 0080, 0091, 0105, 0106, 0108, 0113, 0116, 0121, 0131, 0144, 0228, 0229.*
@@ -48,6 +48,7 @@ The `createRun` body is closed (`unevaluatedProperties: false`). Its fields:
48
48
  - `inputs`, `residency`, `tenantId`, `scopeId`.
49
49
  - `callbackUrl` — see [interrupt.md](interrupt.md) §Callback delivery. A refused value is `400 validation_error` with `details.field: "callbackUrl"`.
50
50
  - `mode`, `evalSuiteRef`, `agentId`.
51
+ - `runSecrets` — run-supplied secrets, accepted only by a host advertising `secrets.runSecrets` ([host-services.md](host-services.md) §Run-supplied secrets). It is never part of `RunOptions`.
51
52
  - The `RunOptions` fields `configurable`, `tags`, `metadata`. A body without `RunOptions` MUST be accepted as if it were `{}`.
52
53
 
53
54
  ### Request headers
@@ -296,4 +297,4 @@ Queue messages ([host-services.md](host-services.md) §`queueBus`) and webhook d
296
297
 
297
298
  A non-terminal run inherited from v1 continues, or is cancelled `v1_pin_unsupported`, per [persistence.md](persistence.md) §"Runs pinned to v1".
298
299
 
299
- *Sources: RFCs 0053, 0058, 0084, 0170, 0171, 0176, 0182, 0228.*
300
+ *Sources: RFCs 0053, 0058, 0084, 0170, 0171, 0176, 0182, 0228, 0229.*
@@ -137,14 +137,22 @@ On an `active` subscription the host:
137
137
  - retries a failed delivery per `retryPolicy`, then dead-letters it without starting a run;
138
138
  - MUST set the delivery id as `causationId` on `run.started`.
139
139
 
140
+ A host whose `triggerBridge.ingestion.inboundSigning` lists `standard-webhooks-1` also serves `webhook` subscriptions this way:
141
+
142
+ - registration returns a `whsec_` `signingSecret` once;
143
+ - a sender signs the raw body with the `webhook-*` headers of §"Standard Webhooks", and that signature, not an OpenWOP credential, authenticates `ingestUrl`;
144
+ - under `required` verification a bad signature, or a timestamp more than 300 seconds off, fails the check (below);
145
+ - `webhook-id` is the identity dedup keys on;
146
+ - the ingest answers `202` (delivered, `runId`), `200` (duplicate, prior `runId`), `401 signature_invalid`, or `409 subscription_not_active`.
147
+
140
148
  A source in `triggerBridge.sources` MUST move through these states and emit `trigger.subscription-state-changed` and `trigger.delivery-attempted`. These events MUST NOT carry inbound content or credentials (`schemas/v2/run-event-payloads.schema.json`).
141
149
 
142
150
  With `triggerBridge.ingestion`, each `externalSources` entry MUST turn an external event into a `TriggerEvent` (`schemas/v2/trigger-event.schema.json`, whose rules bind) and start a run. The host:
143
151
 
144
- - MUST verify per `verification` before delivery; a failed `required` check dead-letters with reason `signature-invalid`;
152
+ - MUST verify per `verification` before delivery. A failed `required` check starts no run and dead-letters only that delivery. A refused event MUST NOT change the subscription's state or emit `trigger.subscription-state-changed`;
145
153
  - returns a binding secret or URL once; `stream` and `change` bindings are empty;
146
154
  - MUST pass the event only as `ctx.triggerData`, never in an event, and replay it from cache (invariant `trigger-ingestion-content-redaction`);
147
155
  - MUST refuse private, link-local and loopback targets and cap the body on any ingestion fetch, and never hand the run a URL (invariant `trigger-ingestion-ssrf`);
148
156
  - SHOULD key `stream` by topic, partition and offset, `change` by table and changelog id; a key MUST survive broker redelivery.
149
157
 
150
- *Sources: RFCs 0053, 0083, 0099, 0127, 0165, 0171, 0173, 0176, 0188, 0196, 0201, 0215, 0217.*
158
+ *Sources: RFCs 0053, 0083, 0099, 0127, 0165, 0171, 0173, 0176, 0188, 0196, 0201, 0215, 0217, 0230.*
@@ -2,7 +2,7 @@
2
2
  "$schema": "./corrections.schema.json",
3
3
  "$comment": "RFC 0197 §A.4 — v2 Class-3 corrections. Seeded with P3 only. The 2.8.2 removal of `workflowChainPacks.deferredParameters` and `.hostExpansionSeam` (P1) is deliberately NOT seeded: a committed bundle carried `deferredParameters` and then failed `capabilities-root-closed`, so the row would fail R3 — which is the point. P1 is recorded as the motivating defect in COMPATIBILITY.md §3a, not laundered into this register.",
4
4
  "version": 1,
5
- "updated": "2026-09-28",
5
+ "updated": "2026-09-30",
6
6
  "rows": [
7
7
  {
8
8
  "id": "openwop.correction.v2.1",
@@ -60,6 +60,23 @@
60
60
  "manifestsScanned": 157,
61
61
  "note": "The prior shape is a verify result with `chainValid: true` beside a non-empty `anomalies`, or `chainValid: false` beside an empty one; the corrected shape is the root if/then/else RFC 0218 §C.4 adds, which the schema's `chainValid` and `anomalies` descriptions already required. Bundle leg: none of the 9 committed evidence/v2-host-bundles/*.json carries a `GET /audit/verify` body (no `chainValid` member anywhere). Registry leg: a verify result is not a manifest field; 0 of 157 pack.json documents on openwop-registry origin/main (4c5de1f) carry `chainValid`. The Anomaly members RFC 0218 §C adds are OPTIONAL additions that check-v2-surface-monotone reports as additive."
62
62
  }
63
+ },
64
+ {
65
+ "id": "openwop.correction.v2.4",
66
+ "date": "2026-09-30",
67
+ "class": "w3c-class-3",
68
+ "releasedIn": "2.45.3",
69
+ "rfc": "0230",
70
+ "pointers": [
71
+ "schemas/v2/trigger-subscription-registration.schema.json#/verification"
72
+ ],
73
+ "compatibilityEntry": "a refused inbound event dead-letters only its delivery",
74
+ "priorShapeCensus": {
75
+ "bundles": 0,
76
+ "manifests": 0,
77
+ "manifestsScanned": 157,
78
+ "note": "The prior shape is behavioral: an event failing a `required` verification moved its subscription to `dead-lettered` with `state.changed.reason: signature-invalid` (v1 trigger-bridge.md §F.2 and the registration schema's `verification` description; v2 webhooks.md §Inbound triggers read the same way). Host census, read-only, 2026-09-30: openwop-app 5ee8cc064 returns `rejected` on a failed check and transitions a subscription only on `retry-exhausted`; MyndHyve 02e5d7fd2 performs no inbound verification (no `ingestion.verification[]`) and has no `dead-lettered` subscription state; no openwop-examples a6d61a6 reference host implements trigger ingestion. So no host implements the prior behavior and nothing conforming stops conforming. Bundle leg: 0 of 18 committed evidence/v2-host-bundles/*.json carry a trigger-bridge row (every trigger scenario is major-1 only); the six MyndHyve bundles advertise `triggerBridge.ingestion` without `verification[]`. Registry leg: a verification policy is a registration-request field, not a manifest field; 0 of 157 pack.json documents on openwop-registry origin/main (3b85bb4) carry one. Only a description changed, so check-v2-surface-monotone sees no change. Had a host implemented the prior rule, COMPATIBILITY.md §3's safety-fix exception would apply: the prior rule is an unauthenticated denial of service that no additive option closes."
79
+ }
63
80
  }
64
81
  ]
65
82
  }
@@ -355,10 +355,16 @@
355
355
  "facets": [
356
356
  "scopes",
357
357
  "resolution",
358
- "resolveInPack"
358
+ "resolveInPack",
359
+ "runSecrets"
359
360
  ],
360
361
  "floorScenarios": [],
361
- "requirementIds": [],
362
+ "requirementIds": [
363
+ "openwop.requirement.secrets.run-witness-resolves",
364
+ "openwop.requirement.secrets.run-witness-redacted",
365
+ "openwop.requirement.secrets.run-witness-scope-bound",
366
+ "openwop.requirement.secrets.run-secrets-outside-request-digest"
367
+ ],
362
368
  "owningRfc": null,
363
369
  "note": "resolveInPack (RFC 0112-era pack peer dependency) is a declared facet"
364
370
  },
@@ -1857,8 +1863,8 @@
1857
1863
  "extensionName": "coordination",
1858
1864
  "witness": "claims-check",
1859
1865
  "maturity": {
1860
- "technical": "experimental",
1861
- "adoption": "none"
1866
+ "technical": "stable",
1867
+ "adoption": "single-witness"
1862
1868
  },
1863
1869
  "facets": [],
1864
1870
  "floorScenarios": [],
@@ -1,14 +1,14 @@
1
1
  # `coordination` extension
2
2
 
3
- > **Status: Draft.**
3
+ > **Status: Stable.**
4
4
 
5
5
  `coordination` names multi-participant coordination primitives that operate on roles, such as voters and competitors. 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:** | `experimental` |
11
- | **adoption:** | `none` |
10
+ | **technical:** | `stable` |
11
+ | **adoption:** | `single-witness` |
12
12
  | **peer-dependency id** | `coordination` |
13
13
  | **advertised as** | `extensions.<org>.coordination` |
14
14
  | **declared facets** | none defined |
@@ -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.45.2",
4
- "corpusTag": "v2.45.2",
5
- "updated": "2026-09-30"
3
+ "version": "2.45.3",
4
+ "corpusTag": "v2.45.3",
5
+ "updated": "2026-10-01"
6
6
  }
@@ -4,7 +4,7 @@
4
4
  "schemas/v2/**/*.json",
5
5
  "spec/v2/path-manifest.json"
6
6
  ],
7
- "release": "2.45.2",
7
+ "release": "2.45.3",
8
8
  "kinds": {
9
9
  "union": [
10
10
  "channel",
@@ -18,7 +18,7 @@
18
18
  "type"
19
19
  ]
20
20
  },
21
- "count": 8593,
21
+ "count": 8603,
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\"",
@@ -3112,6 +3112,11 @@
3112
3112
  "schemas/v2/capabilities.schema.json#/searchIndex|type|object",
3113
3113
  "schemas/v2/capabilities.schema.json#/secrets/resolution|enum-member|\"host-managed\"",
3114
3114
  "schemas/v2/capabilities.schema.json#/secrets/resolution|type|string",
3115
+ "schemas/v2/capabilities.schema.json#/secrets/runSecrets/maxEntries|type|integer",
3116
+ "schemas/v2/capabilities.schema.json#/secrets/runSecrets|closed|true",
3117
+ "schemas/v2/capabilities.schema.json#/secrets/runSecrets|property|maxEntries",
3118
+ "schemas/v2/capabilities.schema.json#/secrets/runSecrets|required|maxEntries",
3119
+ "schemas/v2/capabilities.schema.json#/secrets/runSecrets|type|object",
3115
3120
  "schemas/v2/capabilities.schema.json#/secrets/scopes/[]|enum-member|\"run\"",
3116
3121
  "schemas/v2/capabilities.schema.json#/secrets/scopes/[]|enum-member|\"tenant\"",
3117
3122
  "schemas/v2/capabilities.schema.json#/secrets/scopes/[]|enum-member|\"user\"",
@@ -3130,6 +3135,7 @@
3130
3135
  "schemas/v2/capabilities.schema.json#/secrets/witness|enum-member|\"witnessable-unaided\"",
3131
3136
  "schemas/v2/capabilities.schema.json#/secrets|closed|true",
3132
3137
  "schemas/v2/capabilities.schema.json#/secrets|property|resolution",
3138
+ "schemas/v2/capabilities.schema.json#/secrets|property|runSecrets",
3133
3139
  "schemas/v2/capabilities.schema.json#/secrets|property|scopes",
3134
3140
  "schemas/v2/capabilities.schema.json#/secrets|property|since",
3135
3141
  "schemas/v2/capabilities.schema.json#/secrets|property|status",
@@ -3371,6 +3377,9 @@
3371
3377
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/externalSources/[]|enum-member|\"webhook\"",
3372
3378
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/externalSources/[]|type|string",
3373
3379
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/externalSources|type|array",
3380
+ "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/inboundSigning/[]|enum-member|\"standard-webhooks-1\"",
3381
+ "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/inboundSigning/[]|type|string",
3382
+ "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/inboundSigning|type|array",
3374
3383
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/maxBodyBytes|type|integer",
3375
3384
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/registrationEndpoint|type|boolean",
3376
3385
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/verification/[]|enum-member|\"email-dmarc\"",
@@ -3380,6 +3389,7 @@
3380
3389
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion/verification|type|array",
3381
3390
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion|closed|true",
3382
3391
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion|property|externalSources",
3392
+ "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion|property|inboundSigning",
3383
3393
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion|property|maxBodyBytes",
3384
3394
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion|property|registrationEndpoint",
3385
3395
  "schemas/v2/capabilities.schema.json#/triggerBridge/ingestion|property|verification",