@openwop/spec-artifacts 2.0.10 → 2.0.12

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.0.10",
5
- "corpusTag": "v2.0.10",
4
+ "version": "2.0.12",
5
+ "corpusTag": "v2.0.12",
6
6
  "files": {
7
7
  "api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
8
8
  "api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
9
9
  "api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
10
10
  "api/openapi.yaml": "39081c59fb696159806b0f2f9a42e7e9ff830d622fcf2ad4159b21357580a955",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "3417edc9197081b8854d60afd4758f84c86c53e2b9686012ed0f764b0c3150a7",
13
- "api/v2/asyncapi.yaml": "bc2c53438cb143d2b98ba96f5470ca182017711715e66b2d00d1b9e797df3c41",
14
- "api/v2/openapi.yaml": "a500508bf79ab2fe651ebc74e5fc5f30aaee2c1a6fc29fb7ae698e761e4c0696",
12
+ "api/seams-v2.yaml": "f6da331643d0cc8bd182d50a42a0c84b0ad649c5622b6bcb7958abea4e3db884",
13
+ "api/v2/asyncapi.yaml": "ea69ad935eb5013d7d5cf40693bbc8612c0dc538e213507846ac89bf7b91e76f",
14
+ "api/v2/openapi.yaml": "699df6886f386ff4505237293ab8a7a3d26884f875232626ebd0d51641cd2604",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "0c0b737ffcf8f30e7d2809cec8a498232de710f41443212922ad8337cdde0b51",
17
17
  "schemas/a2a-task-state.schema.json": "c9365918f993f943b4b619d42551eb066a1ed33a08d895d51b395432a5b1f1bc",
@@ -115,7 +115,7 @@
115
115
  "schemas/v2/artifact-type-pack-manifest.schema.json": "85630d1b760d0b41cf5a6fad2acfada39abaf7f0befd95cc4334e1e883e9615d",
116
116
  "schemas/v2/audit-verify-result.schema.json": "a748dfadb5155adfde8a91045e76b0db6695005fe559035d71670fdd55edb3ba",
117
117
  "schemas/v2/budget-policy.schema.json": "c7449daeb6e1d95e7a047b8c2814d3d54748697c27046972834874867d9b5f4c",
118
- "schemas/v2/capabilities.schema.json": "6219faf634cbd137824b66df3a1c71cc5fd964d56f8fc2f6089f226650dde6b5",
118
+ "schemas/v2/capabilities.schema.json": "0d9ca9e3f89a826a1247d295aa4b762e92d550daa5d835d3269f2a1bf1f4faaf",
119
119
  "schemas/v2/certification-bundle.schema.json": "d2cbc5cadddff13630a528dc9673162f582c035c6a6663ca02c1ac53e8fec40c",
120
120
  "schemas/v2/channel-presence-payload.schema.json": "9475d46f358d21c19126e78204987a5633979917a2293653354ef5c5e044d54e",
121
121
  "schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
@@ -199,7 +199,7 @@
199
199
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
200
200
  "spec/v1/alias-detectors.json": "fee4594ef49953953ffcd0b3813300067d16b3e65ebff2aac722034ac9b3f545",
201
201
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
202
- "spec/v1/core-standard-manifest.json": "c19060310025c9e5622cf5218f54da8e681c1e7dd84a89f7177aaea295d42a6a",
202
+ "spec/v1/core-standard-manifest.json": "681b4288007e770595e299aeca2d08419a7696be2d151fb9fd152f49255b25c4",
203
203
  "spec/v1/deprecations.json": "1d5acb69a9b8ccb57275a95605f74aef1d920685f8407c9d382a46b59dc803bb",
204
204
  "spec/v1/deprecations.schema.json": "18c87e78bedc210431f795ae44c5b5d202f2f3317850d5cf86867d4f1fa1cdfb",
205
205
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
@@ -211,28 +211,28 @@
211
211
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
212
212
  "spec/v1/operation-path-manifest.json": "5f5f4e3842669371730ebbd1aace3fb794192615f0018dc144f484ba5db82ac3",
213
213
  "spec/v1/spec-gaps.json": "6cc9962c6b969f632e07a78b52a4f61447ff579e2990cbae989866f584a86042",
214
- "spec/v2/README.md": "d7af039a68c81af57ac0a91521308f038c71608988edb196a34d9da9d9474f1e",
215
- "spec/v2/core/capabilities.md": "95d1eee8d21e66c0c84591f2cf8bc81438bd39d7419f0ca67a589ec6e6cda4d1",
216
- "spec/v2/core/conformance.md": "c235144f9a83bd5fcc9d15998e480970f5ac05ea9e57fc0036abe3a21f3d2016",
217
- "spec/v2/core/connection-packs.md": "4b3fb729d94842000f0af91e2dcc6f163a910a37de41f3ac07dfcfb03179c3f1",
218
- "spec/v2/core/errors.md": "f2ca092dce5d599111c28fb58638a82cc46807a1cefc38e65df454d3f133334e",
219
- "spec/v2/core/events.md": "6f76e236b345e0c2a20e5b33e8230ebb73b8d20559fcc67a1c47041b6c633f87",
220
- "spec/v2/core/form-content-packs.md": "eb84cda14d567c3d6a81d1806566b7fb20b70cf85bdc534183bf66529e213179",
221
- "spec/v2/core/headers.md": "7e522187bac1de477ede8071d2241f8baca6df0909b20b09b01748e618a33685",
222
- "spec/v2/core/idempotency.md": "ed6981d0021b101c244d2d4d2222d72bf01ceb6e12622c9b720d4e120c29bd47",
223
- "spec/v2/core/identity.md": "ea5a5626aa6189f7cb8949fe5404d213df19f9452b872fa1ed7f1e0449e889d4",
224
- "spec/v2/core/interop.md": "4d3aa4aff637edd4f8ae064ac9fcbabb0d650d55b2a95a3a0b021a2e737df616",
225
- "spec/v2/core/interrupt.md": "e456eb307d43121baf0f1b6c7d514f11f71c1f3fbd0f36ded99d8d804cf8ba49",
226
- "spec/v2/core/overview.md": "7e9ec5f693f59f36139671138050c731abeb1b33eb262abe51554371e0c86991",
227
- "spec/v2/core/packs.md": "c0a98373f5d10a1fbc6d6865d9068125eca8983b9bc5d45780776e010c4cf1b4",
228
- "spec/v2/core/persistence.md": "fdfc2269ebf63972626654a6907c648aa9b231be65a54679930b6279dd12afeb",
229
- "spec/v2/core/replay.md": "793e0256c3d7551e20ccaf9ff51990f1ac9db096508e80ff57dd1bbf9f89f7fb",
230
- "spec/v2/core/runs.md": "7fe674de4c54a9f86f00c4fc0f3ff18ea191a2bdd9b048beafc2b93f97857fcc",
231
- "spec/v2/core/security-defaults.md": "8bd0a3be854310bb7ec49c757e75914a0c9713e94db25193d5c158e1e3e04ac9",
232
- "spec/v2/core/versioning.md": "9da951272cb11a7f66c4f294c8d6dca97408535ea16445cb63f1d9330ae2cdae",
233
- "spec/v2/core/webhooks.md": "7a8a5c5eebe3226b5eacecfb222abd91d2e44a20eb201a15b36a7ffced2e1cde",
234
- "spec/v2/core/workflow-chain-packs.md": "79f5ea4e52020531fd360868c12ebf0640c2e833f6b6fb207091a063130a68e5",
235
- "spec/v2/declaration.json": "bd8a1dcee899a4478ac96b52da6ee07e1cb5fce4465939ac32e19e52f4d5c6b2",
214
+ "spec/v2/README.md": "87f3eb080264011032cc273cfc87f434d1e660e43380f0f1f5d753605fffb835",
215
+ "spec/v2/core/capabilities.md": "8151e42762b8c079b98251cd73231f792c708004c5e9e980b674db7bda491851",
216
+ "spec/v2/core/conformance.md": "fde584474ed3934b02ff7bb1e5d1c7fbdd05c465f8430a945ff7aa1c3f72401f",
217
+ "spec/v2/core/connection-packs.md": "72aa432037b004883cb6956f54fa9f1d8bc154c27e7dde54d940864d48885957",
218
+ "spec/v2/core/errors.md": "0dce8fbff69f3519b775fe4d2fba52bb21d33cb62735c96872bb4b7aed43eb97",
219
+ "spec/v2/core/events.md": "dfa65dc347e3e8c76067b4014aff10f5dc308f43b2346a9e91277854e7d91e55",
220
+ "spec/v2/core/form-content-packs.md": "8db449943e5683bcea1bae84d0d2f5268ce1ba63439d949102f3f0811f95b215",
221
+ "spec/v2/core/headers.md": "90f9ceb993444e5255c562bc1dd2978f030167a3c35cc2c44a99fef0a371f7cb",
222
+ "spec/v2/core/idempotency.md": "a580258c5c9d6b1adb05b43de90b055f1ce7f79856cdea40f2d02806fd792e77",
223
+ "spec/v2/core/identity.md": "dd29dc95bb58ef57583f540b03d5d722d2c9f7a7c6e8412fd1d19e64191d1a85",
224
+ "spec/v2/core/interop.md": "3beb10f9bace3bc650f14e96dcf4927917448950e90e31d9652abe7cb2cf5515",
225
+ "spec/v2/core/interrupt.md": "8801f6b0b97ba653298aeaffe6957b58e7018bc175b9705e170e69831ef9b273",
226
+ "spec/v2/core/overview.md": "0e941660227d1526411f30822da128969312aa2d60318fcbcadad497a9aa54d9",
227
+ "spec/v2/core/packs.md": "ef1dcf9142427f68d781dd8babc35f4b5e0601130a40ac6efc007f7008f1467c",
228
+ "spec/v2/core/persistence.md": "aa34d7218839d856cfe61e67b0422914013b17f51c5f582a7f92795d0ee7daf7",
229
+ "spec/v2/core/replay.md": "c2c9d30e9ff04554dc5b6879b66e78e7b748038ffccf2329063981a618111e1c",
230
+ "spec/v2/core/runs.md": "01f4a979a91fa7a9066b5982d022656464b6c2aba81403a91c521e9e8511d80d",
231
+ "spec/v2/core/security-defaults.md": "0cd30b1a166d3516182f6ad68c86ea27c11b04ba072cd739cc50b4d5c516c89b",
232
+ "spec/v2/core/versioning.md": "7e99def44c8149414b9b465cf280f470b1b0db37c37a83e49e8dbeae502dc65c",
233
+ "spec/v2/core/webhooks.md": "0642953ca6f56fe52bcf5ebceb66badd05234a8476b46bc5c59e01eebfbad8ff",
234
+ "spec/v2/core/workflow-chain-packs.md": "8ffa8c18c7b721d922f0a506d75fc5c407f1e561b78ebfd92c502bb0efca03b1",
235
+ "spec/v2/declaration.json": "b99a9cd43228af06e0cc63a170b3e1a7acda3e4ac4f4906a578ac51cee494c23",
236
236
  "spec/v2/declaration.schema.json": "eac5f8080bd572f147bd57d0c4ac8ad73b14536d9236222490ae29a33b21e184",
237
237
  "spec/v2/errors.json": "f179414a92f30b5dadf26e9e57699649a67324bd7186d5287647d17605d137d3",
238
238
  "spec/v2/event-codemap.json": "37869a03cdfd8758b57e6f350641a6ebbd383231cebda51f5473ad85f94ab74c",
@@ -268,8 +268,8 @@
268
268
  "spec/v2/path-manifest.json": "034152e09b1458c66810d4050e20a273b2b9b8fe2d92b66e8b819477de58a1be",
269
269
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
270
270
  "spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
271
- "spec/v2/release.json": "c866befad1b142734532a7bf987ead39497369ee50678b107c1a0c3f5fea6c6d",
271
+ "spec/v2/release.json": "a9e8f39bdccd099e6b57d0f114997f79177f7dce21b7d764b42e9a25d1aa1101",
272
272
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
273
273
  },
274
- "corpusCommit": "203d6e8c285fc45875a3f1beca4f4812bb6bbb7e"
274
+ "corpusCommit": "489c36a5fb4832588dcfbc6d6e736a531a772b6d"
275
275
  }
package/api/seams-v2.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP conformance seams profile (openwop-conformance-seams-v2)
4
- version: 2.0.10
4
+ version: 2.0.12
5
5
  description: 'GENERATED by scripts/derive-v2-api.py. RFC 0168 §C: the seams are a versioned conformance profile with their
6
6
  own document and path space (/conformance/seams/…), validated against the canonical v2 schemas with no tolerance path,
7
7
  forbidden from the capability namespace (a host advertises the profile, never a testSeams flag). This document carries
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.0.10
4
+ version: 2.0.12
5
5
  description: GENERATED by scripts/derive-v2-api.py (RFC 0171 §E.1, RFC 0172 §C.2). One run-events channel whose address
6
6
  is the OpenAPI path key; the server pathname is empty (bare origin). streamMode is a pattern over the closed set and its
7
7
  comma-separated combinations (`values` never combines). hostEvents has a real address (RFC 0171 §E.1) — the documented
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.0.10
4
+ version: 2.0.12
5
5
  summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
6
6
  description: GENERATED by scripts/derive-v2-api.py from api/openapi.yaml and the RFC 0167 children (v2 charter Phase 3,
7
7
  P3-C). Bare origin, unversioned path keys, negotiation by `OpenWOP-Version` + `protocolVersions[]` (RFC 0172 §A). No seam
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.0.10",
3
+ "version": "2.0.12",
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 \u2014 published from the openwop/openwop corpus tag; the peer dependency @openwop/openwop-conformance digest-checks at start (RFC 0168 \u00a7D.2).",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -35,7 +35,7 @@
35
35
  "description": "A vendor/host extension record; its shape is the org's, declared as open on purpose (RFC 0169 §A.4)."
36
36
  }
37
37
  },
38
- "description": "RFC 0169 §A.4 — one key for every vendor/host extension, <org>.<name>; reserved orgs: openwop, vendor."
38
+ "description": "RFC 0169 §A.4 — one key for every vendor/host extension, <org>.<name>; reserved orgs: openwop, vendor, effect-seams, events."
39
39
  },
40
40
  "implementation": {
41
41
  "type": "object",
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.0.10"
7
+ "version": "2.0.12"
8
8
  },
9
9
  "note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
10
10
  },
@@ -419,5 +419,5 @@
419
419
  "$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
420
420
  }
421
421
  ],
422
- "digest": "6d0b7a254b9cb5c3927388d4af9c870e136ca95a764fc0047c0c4e48d0100ca9"
422
+ "digest": "41185d10ecae45ef7ddd66ddf701a00d6bf60148d4dbd6352146d480b71c4cc4"
423
423
  }
package/spec/v2/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # `spec/v2/` — the OpenWOP v2 tree (the current protocol major)
2
2
 
3
- > **Status: released.** v2 is the current protocol major — `v2.0.0` was tagged 2026-09-05 and this tree is at corpus `v2.0.10` (`release.json`). Everything under `spec/v2/`, `schemas/v2/` and `api/v2/` is normative, is vendored into `@openwop/spec-artifacts`, and is what `@openwop/openwop-conformance` 2.x measures. A new integration targets v2.
3
+ > **Status: released.** v2 is the current protocol major — `v2.0.0` was tagged 2026-09-05 and this tree is at corpus `v2.0.12` (`release.json`). Everything under `spec/v2/`, `schemas/v2/` and `api/v2/` is normative, is vendored into `@openwop/spec-artifacts`, and is what `@openwop/openwop-conformance` 2.x measures. A new integration targets v2.
4
4
  >
5
5
  > **v1 is not retired.** Through the overlap a host advertises both majors and `preferredVersion` MUST remain a `1.x` member (`core/versioning.md` §1.1); v1 clients keep working unchanged on `/v1/…`. v1 end-of-support is the later of two clocks in `core/overview.md`, earliest 2026-12-04, and until then `spec/v1/` stays the maintained parallel track. A `1.x` conformance tarball still excludes this tree (`conformance/scripts/pack-vendor.sh`).
6
6
  >
@@ -1,6 +1,6 @@
1
1
  # Discovery and Capabilities
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0169, 0176, 0179.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0169, 0176, 0179.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Conformance
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0168.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0168.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Connection Packs
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0177, RFC 0095.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0177, RFC 0095.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Errors
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0171 §B.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0171 §B.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Events
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0171 §A, §E; RFC 0176 §A.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0171 §A, §E; RFC 0176 §A.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Form Content Packs
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0177, RFC 0137.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0177, RFC 0137.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Headers
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0171 §C.1, RFC 0172 §A.3–§A.4.** GENERATED by `scripts/derive-v2-api.py` from `api/v2/openapi.yaml`; do not edit.
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0171 §C.1, RFC 0172 §A.3–§A.4.** GENERATED by `scripts/derive-v2-api.py` from `api/v2/openapi.yaml`; do not edit.
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Idempotency
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0170 §D.3, RFC 0171 §B.2, RFC 0173 §B.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0170 §D.3, RFC 0171 §B.2, RFC 0173 §B.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Identity
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0170, 0165, 0176.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0170, 0165, 0176.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Interop
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0175.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0175.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Interrupt
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0170 §E.1, RFC 0171 §A.4, RFC 0173 §B.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0170 §E.1, RFC 0171 §A.4, RFC 0173 §B.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # OpenWOP v2 Core — Overview
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0167, 0168, 0169, 0171, 0174.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0167, 0168, 0169, 0171, 0174.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Packs
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0177.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0177.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Persistence and Coexistence
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0176 (§A–§B, §D–§E), 0171 §A, 0170 §A.3.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0176 (§A–§B, §D–§E), 0171 §A, 0170 §A.3.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Replay and Fork
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0140, 0041, 0173 §C, 0176 §A.5.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0140, 0041, 0173 §C, 0176 §A.5.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Runs
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0170 §A, §D.1; RFC 0171 §D; RFC 0176 §B.1.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0170 §A, §D.1; RFC 0171 §D; RFC 0176 §B.1.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Security Defaults
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0173 (§A–§E), 0164 §22, 0170 §B.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0173 (§A–§E), 0164 §22, 0170 §B.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Versioning and Release
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0172, 0179, 0176.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0172, 0179, 0176.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -43,7 +43,7 @@ Every protocol response MUST carry `OpenWOP-Version: <major>.<minor>` naming the
43
43
 
44
44
  A *protocol response* is one produced by an operation named in `spec/v2/path-manifest.json` (or its `/v1/` twin through the overlap); a shell, a hosting fallback or a proprietary route on the same origin has no version to name. Errata 2026-09-10: this read "any path" — §1.2's quantifier defect again.
45
45
 
46
- **A non-protocol response MUST NOT carry `OpenWOP-Version` and MUST NOT be `application/json`**; a reader, a cache or the suite MUST NOT count a response without the header, or with a `text/html` body, as reaching the operation (`reachedUnderMajor2`).
46
+ **On a manifest-named path, a non-protocol response MUST NOT carry `OpenWOP-Version` and MUST NOT be `application/json`**; a reader, a cache or the suite MUST NOT count a response without the header, or with a `text/html` body, as reaching the operation (`reachedUnderMajor2`). A vendor path (§5, RFC 0181) is not a shared name; nothing about its representation is constrained.
47
47
 
48
48
  **Content negotiation on a shared name is permitted, with conditions.** A host MAY serve a protocol operation and a page under one unversioned name, selecting on `Accept`, iff:
49
49
 
@@ -118,7 +118,7 @@ The overlap ends at v1 end-of-support (`overview.md`), when `protocolVersions[]`
118
118
 
119
119
  **Retirement flips every header-less request's contract.** Through the overlap a header-less request on an unversioned name is served major 1 (§1.3); where the v1 surface lives under `/v1/` that name is not a v1 key and falls through to whatever else is served there — typically a page. At end-of-support the same request is served major 2 and the page starts answering the operation. A `/v1/`-counting inventory cannot see this. Test: `manifest top-level segments ∩ anything else served unversioned` (`{agents, prompts, runs}` on the host that found it). A non-empty intersection MUST be resolved before end-of-support: move the page, or serve it under §1.4's conditions.
120
120
 
121
- **Open gap — host-proprietary paths have no defined successor.** A host may serve `/v1` roots the manifest does not name. §1.2 does not bind them, and at end-of-support the `/v1` prefix that addressed them is gone, so the protocol says nothing about where they go. This is **undecided, not permissive**: the corpus reserves a vendor namespace for capability records (`capabilities.md` §"extensions"), error codes (`errors.md`), event types (`events.md`), and pack-document properties (`packs.md`), each keyed to an org registered in `spec/v2/declaration.json` — and has no equivalent for paths. RFC 0172 rejected a `/v2/` path space and did not reach this question. The one worked example of a legitimate path space outside the manifest is the seams profile (`conformance.md` §"Test seams"), which stays honest by advertising `openwop-conformance-seams-v2` in `profiles[]` rather than by any path-level rule. A host in this position SHOULD record the affected roots before end-of-support so the set is known when the question is decided.
121
+ **Host-proprietary paths live at `/host/<org>/…` (RFC 0181).** The corpus keys every vendor namespace — capability records (`capabilities.md` §3.2), error codes, event types, pack properties — to an org registered in `spec/v2/declaration.json`; paths join that pattern. A host MAY serve operations the manifest does not name under `/host/<org>/…` for its registered org, with no major in the path (RFC 0172 rejected a `/v2/` space) and regardless of `OpenWOP-Version` — nothing there is a protocol operation, the suite never measures it, and §1.4's shared-name constraints do not apply. An org MUST NOT be named after a manifest segment under `/host/` (`reservedOrgs`), and a host SHOULD advertise the mount under `extensions.<org>.<name>`. A `/v1/host/<org>/…` twin MAY be served through the overlap; it retires atomically with `/v1`. Decided 2026-09-10 after two production hosts measured the gap (1,062 and 11 roots).
122
122
 
123
123
  ## 6. Migration rows (RFC 0172)
124
124
 
@@ -1,6 +1,6 @@
1
1
  # Webhooks
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0165 §C.1, 0173 §B, 0176 §D.2, 0171 §A.4.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0165 §C.1, 0173 §B, 0176 §D.2, 0171 §A.4.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Workflow Chain Packs
2
2
 
3
- > **Status: Stable · v2.0.10 (2026-09-10) · RFC 0177, RFC 0133.**
3
+ > **Status: Stable · v2.0.12 (2026-09-10) · RFC 0177, RFC 0133.**
4
4
 
5
5
  ## Why this exists
6
6
 
@@ -13,7 +13,9 @@
13
13
  "extensionsKeyPattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*\\.[a-z][a-z0-9]*(-[a-z0-9]+)*$",
14
14
  "reservedOrgs": [
15
15
  "openwop",
16
- "vendor"
16
+ "vendor",
17
+ "effect-seams",
18
+ "events"
17
19
  ],
18
20
  "extensions": {
19
21
  "example": {
@@ -21,6 +23,16 @@
21
23
  "registered": "2026-09-06",
22
24
  "reserved": true,
23
25
  "note": "Never assignable to a real vendor (RFC 2606 precedent). A conformance scenario needs one registered org whose events no host owns, so the positive half of the vendor rule is drivable; without it the registry could only ever say no."
26
+ },
27
+ "openwop-app": {
28
+ "name": "openwop-app — the reference application host (app.openwop.dev), steward-affiliated; github.com/openwop/openwop-app",
29
+ "registered": "2026-09-11",
30
+ "note": "Ships vendor event types (e.g. openwop-app.conversation.recall_used), vendor error codes, and the /host/openwop-app/ path namespace (RFC 0181). Registered by the steward on the host's application over the steward bus, 2026-09-10."
31
+ },
32
+ "myndhyve": {
33
+ "name": "MyndHyve — workflow-runtime host (api.myndhyve.ai), steward-affiliated sibling",
34
+ "registered": "2026-09-11",
35
+ "note": "Ships vendor event types and error codes under myndhyve.* and the /host/myndhyve/ path namespace (RFC 0181). Registered by the steward on the host's application over the steward bus, 2026-09-10."
24
36
  }
25
37
  },
26
38
  "metadata": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "RFC 0172 \u00a7D.1 \u2014 the one release identity the v2 artifacts derive from. `version` is the next corpus tag `v<version>` (the publish workflow's coordinated-release tag pattern `v*`; RFC 0172's `openwop/v2.<minor>.<patch>` spelling is amended to this at its flip). api/v2/*.yaml info.version, the suite's 2.x version and @openwop/spec-artifacts read it. Bumped by the release PR that cuts the tag, never by hand elsewhere.",
3
- "version": "2.0.10",
4
- "corpusTag": "v2.0.10",
3
+ "version": "2.0.12",
4
+ "corpusTag": "v2.0.12",
5
5
  "updated": "2026-09-05"
6
6
  }