@openwop/spec-artifacts 2.42.5 → 2.42.7

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.
Files changed (63) hide show
  1. package/CORPUS-STAMP.json +64 -63
  2. package/api/seams-v2.yaml +238 -316
  3. package/api/v2/asyncapi.yaml +83 -113
  4. package/api/v2/openapi.yaml +339 -724
  5. package/package.json +1 -1
  6. package/schemas/audit-verify-result.schema.json +2 -2
  7. package/schemas/v2/audit-verify-result.schema.json +2 -2
  8. package/schemas/v2/capabilities.schema.json +2 -5
  9. package/spec/v1/core-standard-manifest.json +2 -2
  10. package/spec/v1/gaps.json +171 -1
  11. package/spec/v2/README.md +34 -36
  12. package/spec/v2/core/capabilities.md +186 -119
  13. package/spec/v2/core/conformance.md +78 -27
  14. package/spec/v2/core/connection-packs.md +8 -3
  15. package/spec/v2/core/conversation.md +10 -4
  16. package/spec/v2/core/errors.md +30 -9
  17. package/spec/v2/core/events.md +116 -80
  18. package/spec/v2/core/form-content-packs.md +11 -13
  19. package/spec/v2/core/headers.md +22 -14
  20. package/spec/v2/core/host-services.md +22 -5
  21. package/spec/v2/core/idempotency.md +48 -36
  22. package/spec/v2/core/identity.md +110 -42
  23. package/spec/v2/core/interop.md +82 -21
  24. package/spec/v2/core/interrupt.md +79 -40
  25. package/spec/v2/core/node-pack-runtimes.md +18 -4
  26. package/spec/v2/core/oauth.md +40 -6
  27. package/spec/v2/core/overview.md +61 -33
  28. package/spec/v2/core/packs.md +53 -28
  29. package/spec/v2/core/persistence.md +61 -80
  30. package/spec/v2/core/replay.md +56 -42
  31. package/spec/v2/core/runs.md +198 -60
  32. package/spec/v2/core/security-defaults.md +57 -33
  33. package/spec/v2/core/tool-catalog.md +29 -6
  34. package/spec/v2/core/versioning.md +95 -49
  35. package/spec/v2/core/webhooks.md +59 -20
  36. package/spec/v2/core/workflow-chain-packs.md +16 -14
  37. package/spec/v2/corrections.json +17 -1
  38. package/spec/v2/corrections.schema.json +1 -1
  39. package/spec/v2/declaration.json +24 -7
  40. package/spec/v2/declaration.schema.json +10 -0
  41. package/spec/v2/errors.json +109 -2
  42. package/spec/v2/errors.schema.json +38 -0
  43. package/spec/v2/ext/README.md +36 -23
  44. package/spec/v2/ext/a2uiSurface/README.md +75 -89
  45. package/spec/v2/ext/brand/README.md +15 -15
  46. package/spec/v2/ext/canvas/README.md +15 -15
  47. package/spec/v2/ext/chat/README.md +15 -15
  48. package/spec/v2/ext/coordination/README.md +15 -15
  49. package/spec/v2/ext/dataIntegration/README.md +17 -20
  50. package/spec/v2/ext/entities/README.md +15 -15
  51. package/spec/v2/ext/grpc-transport/README.md +6 -8
  52. package/spec/v2/ext/kanban/README.md +15 -15
  53. package/spec/v2/ext/knowledge/README.md +15 -15
  54. package/spec/v2/ext/launchStudio/README.md +16 -16
  55. package/spec/v2/ext/messaging/README.md +15 -15
  56. package/spec/v2/ext/portability/README.md +3 -17
  57. package/spec/v2/ext/provider-idempotency/README.md +7 -10
  58. package/spec/v2/ext/restTransport/README.md +30 -19
  59. package/spec/v2/ext/sandbox-runtime-notes/README.md +7 -9
  60. package/spec/v2/ext/webResearch/README.md +16 -16
  61. package/spec/v2/profiles.json +6 -2
  62. package/spec/v2/release.json +2 -2
  63. package/spec/v2/surface-baseline.json +542 -2
@@ -1,7 +1,8 @@
1
1
  # `entities` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `entities` names generic entity CRUD over projects and workspace assets. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -10,24 +11,23 @@
10
11
  | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `entities` |
12
13
  | **advertised as** | `extensions.<org>.entities` |
13
- | **owning RFC** | RFC 0144 |
14
14
  | **declared facets** | none defined |
15
15
 
16
16
  ## Contract boundary
17
17
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `entities` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
18
+ A host MAY advertise `entities` as `extensions["<org>.entities"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record is organization-defined, so:
23
19
 
24
- The v1 description,
25
- [`spec/v1/host-capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/host-capabilities.md#hostentities)
26
- (§host.entities), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
20
+ - a client MUST NOT infer portable operations, payloads, or authorization semantics from its presence;
21
+ - a pack may name `entities` as a dependency only when the host and pack share an out-of-band definition of it.
29
22
 
30
23
  ## Conformance
31
24
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
25
+ The `claims-check` witness checks only that the discovery claim is well formed, not runtime behavior. `conformance/src/scenarios/v2-ext-family-claims.test.ts` records it under `openwop.family.entities`:
26
+
27
+ - the key `<org>.entities` matches `extensionsKeyPattern`, and `<org>` is registered and not reserved;
28
+ - the record is a JSON object;
29
+ - `entities` is not also a member of the discovery root.
30
+
31
+ A host that does not advertise the family records `inapplicable`. A `Stable` label on this page therefore means a host at evidence tier 2 or better advertises the reservation correctly. It does not mean two hosts interoperate on it ([`../README.md`](../README.md)).
32
+
33
+ *Sources: RFC 0144.*
@@ -1,7 +1,8 @@
1
1
  # gRPC transport notes
2
2
 
3
- > **Status: Draft · non-normative note.** This is not a declared extension
4
- > family and is outside this rule.
3
+ > **Status: Note.**
4
+
5
+ A non-normative note, not a declared family. v2 has no normative gRPC transport, because the conformance suite has no gRPC client or behavioral witness.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -9,10 +10,7 @@
9
10
  | **technical:** | `experimental` |
10
11
  | **adoption:** | `none` |
11
12
  | **advertised as** | not advertisable; v2 has no `grpc` discovery record |
12
- | **owning RFC** | RFC 0175 (demotion); RFC 0094 §H (v1 text) |
13
13
 
14
- The [v1 `openwop.proto`](https://github.com/openwop/openwop/blob/main/spec/v2/ext/grpc-transport/openwop.proto)
15
- is retained as a sketch and uses `package openwop.v1`; it is not a v2 contract.
16
- v2 has no normative gRPC transport because the conformance suite has no gRPC
17
- client or behavioral witness. The v1 contract remains in
18
- [`spec/v1/grpc-transport.md`](https://github.com/openwop/openwop/blob/main/spec/v1/grpc-transport.md).
14
+ [`openwop.proto`](https://github.com/openwop/openwop/blob/main/spec/v2/ext/grpc-transport/openwop.proto) is a sketch only. It is not a v2 contract.
15
+
16
+ *Sources: RFC 0094, RFC 0175.*
@@ -1,7 +1,8 @@
1
1
  # `kanban` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `kanban` names board, task, timeline and automation operations. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -10,24 +11,23 @@
10
11
  | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `kanban` |
12
13
  | **advertised as** | `extensions.<org>.kanban` |
13
- | **owning RFC** | RFC 0144 |
14
14
  | **declared facets** | none defined |
15
15
 
16
16
  ## Contract boundary
17
17
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `kanban` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
18
+ A host MAY advertise `kanban` as `extensions["<org>.kanban"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record is organization-defined, so:
23
19
 
24
- The v1 description,
25
- [`spec/v1/host-capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/host-capabilities.md#hostkanban)
26
- (§host.kanban), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
20
+ - a client MUST NOT infer portable operations, payloads, or authorization semantics from its presence;
21
+ - a pack may name `kanban` as a dependency only when the host and pack share an out-of-band definition of it.
29
22
 
30
23
  ## Conformance
31
24
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
25
+ The `claims-check` witness checks only that the discovery claim is well formed, not runtime behavior. `conformance/src/scenarios/v2-ext-family-claims.test.ts` records it under `openwop.family.kanban`:
26
+
27
+ - the key `<org>.kanban` matches `extensionsKeyPattern`, and `<org>` is registered and not reserved;
28
+ - the record is a JSON object;
29
+ - `kanban` is not also a member of the discovery root.
30
+
31
+ A host that does not advertise the family records `inapplicable`. A `Stable` label on this page therefore means a host at evidence tier 2 or better advertises the reservation correctly. It does not mean two hosts interoperate on it ([`../README.md`](../README.md)).
32
+
33
+ *Sources: RFC 0144.*
@@ -1,7 +1,8 @@
1
1
  # `knowledge` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `knowledge` names knowledge-base retrieval through the host's RAG pipeline. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -10,24 +11,23 @@
10
11
  | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `knowledge` |
12
13
  | **advertised as** | `extensions.<org>.knowledge` |
13
- | **owning RFC** | RFC 0144 |
14
14
  | **declared facets** | none defined |
15
15
 
16
16
  ## Contract boundary
17
17
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `knowledge` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
18
+ A host MAY advertise `knowledge` as `extensions["<org>.knowledge"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record is organization-defined, so:
23
19
 
24
- The v1 description,
25
- [`spec/v1/host-capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/host-capabilities.md#hostknowledge)
26
- (§host.knowledge), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
20
+ - a client MUST NOT infer portable operations, payloads, or authorization semantics from its presence;
21
+ - a pack may name `knowledge` as a dependency only when the host and pack share an out-of-band definition of it.
29
22
 
30
23
  ## Conformance
31
24
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
25
+ The `claims-check` witness checks only that the discovery claim is well formed, not runtime behavior. `conformance/src/scenarios/v2-ext-family-claims.test.ts` records it under `openwop.family.knowledge`:
26
+
27
+ - the key `<org>.knowledge` matches `extensionsKeyPattern`, and `<org>` is registered and not reserved;
28
+ - the record is a JSON object;
29
+ - `knowledge` is not also a member of the discovery root.
30
+
31
+ A host that does not advertise the family records `inapplicable`. A `Stable` label on this page therefore means a host at evidence tier 2 or better advertises the reservation correctly. It does not mean two hosts interoperate on it ([`../README.md`](../README.md)).
32
+
33
+ *Sources: RFC 0144.*
@@ -1,7 +1,8 @@
1
1
  # `launchStudio` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `launchStudio` names launch-studio operations for the multi-canvas launch workflow. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -9,25 +10,24 @@
9
10
  | **technical:** | `experimental` |
10
11
  | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `launchStudio` |
12
- | **advertised as** | `extensions.<org>.launchStudio` |
13
- | **owning RFC** | RFC 0144 |
13
+ | **advertised as** | `extensions.<org>.launch-studio` |
14
14
  | **declared facets** | none defined |
15
15
 
16
16
  ## Contract boundary
17
17
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `launchStudio` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
18
+ A host MAY advertise `launchStudio` as `extensions["<org>.launch-studio"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record is organization-defined, so:
23
19
 
24
- The v1 description,
25
- [`spec/v1/host-capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/host-capabilities.md#hostlaunchstudio)
26
- (§host.launchStudio), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
20
+ - a client MUST NOT infer portable operations, payloads, or authorization semantics from its presence;
21
+ - a pack may name `launchStudio` as a dependency only when the host and pack share an out-of-band definition of it.
29
22
 
30
23
  ## Conformance
31
24
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
25
+ The `claims-check` witness checks only that the discovery claim is well formed, not runtime behavior. `conformance/src/scenarios/v2-ext-family-claims.test.ts` records it under `openwop.family.launchStudio`:
26
+
27
+ - the key `<org>.launch-studio` matches `extensionsKeyPattern`, and `<org>` is registered and not reserved;
28
+ - the record is a JSON object;
29
+ - `launchStudio` is not also a member of the discovery root.
30
+
31
+ A host that does not advertise the family records `inapplicable`. A `Stable` label on this page therefore means a host at evidence tier 2 or better advertises the reservation correctly. It does not mean two hosts interoperate on it ([`../README.md`](../README.md)).
32
+
33
+ *Sources: RFC 0144.*
@@ -1,7 +1,8 @@
1
1
  # `messaging` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `messaging` names outbound chat-egress dispatch through host-owned connectors. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -10,24 +11,23 @@
10
11
  | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `messaging` |
12
13
  | **advertised as** | `extensions.<org>.messaging` |
13
- | **owning RFC** | RFC 0144 |
14
14
  | **declared facets** | none defined |
15
15
 
16
16
  ## Contract boundary
17
17
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `messaging` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
18
+ A host MAY advertise `messaging` as `extensions["<org>.messaging"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record is organization-defined, so:
23
19
 
24
- The v1 description,
25
- [`spec/v1/host-capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/host-capabilities.md#hostmessaging)
26
- (§host.messaging), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
20
+ - a client MUST NOT infer portable operations, payloads, or authorization semantics from its presence;
21
+ - a pack may name `messaging` as a dependency only when the host and pack share an out-of-band definition of it.
29
22
 
30
23
  ## Conformance
31
24
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
25
+ The `claims-check` witness checks only that the discovery claim is well formed, not runtime behavior. `conformance/src/scenarios/v2-ext-family-claims.test.ts` records it under `openwop.family.messaging`:
26
+
27
+ - the key `<org>.messaging` matches `extensionsKeyPattern`, and `<org>` is registered and not reserved;
28
+ - the record is a JSON object;
29
+ - `messaging` is not also a member of the discovery root.
30
+
31
+ A host that does not advertise the family records `inapplicable`. A `Stable` label on this page therefore means a host at evidence tier 2 or better advertises the reservation correctly. It does not mean two hosts interoperate on it ([`../README.md`](../README.md)).
32
+
33
+ *Sources: RFC 0144.*
@@ -1,21 +1,7 @@
1
1
  # Portability notes
2
2
 
3
- > **Status: Draft · non-core note.** This is not a declared extension family
4
- > and is outside this rule.
3
+ > **Status: Retired.**
5
4
 
6
- | Field | Value |
7
- | --- | --- |
8
- | **witness:** | `claims-check` |
9
- | **technical:** | `experimental` |
10
- | **adoption:** | `none` |
11
- | **advertised as** | `extensions.<org>.portability` |
12
- | **owning RFC** | RFC 0168 §C.1; RFC 0174 §E.2; RFCs 0086 and 0087 (v1 text) |
5
+ Superseded by: [capabilities.md § portability](../../core/capabilities.md#portability).
13
6
 
14
- The v2 core API does not define goals, export, or import operations. The
15
- [`export-bundle` schema](../../../../schemas/v2/export-bundle.schema.json) records
16
- the proposed bundle shape, but no portable transport or behavioral witness is
17
- defined. A host MAY expose an organization-specific portability extension; a
18
- client MUST NOT assume it is compatible with another host's extension.
19
-
20
- The v1 background is in
21
- [`spec/v1/portability.md`](https://github.com/openwop/openwop/blob/main/spec/v1/portability.md).
7
+ This page is not a declared extension family. `portability` is a core family, and its rules live there.
@@ -1,19 +1,16 @@
1
1
  # Provider idempotency registry
2
2
 
3
- > **Status: Draft · supporting registry.** This is not a declared extension
4
- > family and is outside this rule.
3
+ > **Status: Note.**
4
+
5
+ A supporting registry, not a declared family.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
8
9
  | **witness:** | `witnessable-gated` |
9
10
  | **technical:** | `experimental` |
10
11
  | **adoption:** | `none` |
11
- | **advertised as** | not applicable; supporting registry only |
12
- | **owning RFC** | RFC 0173 §C.2, RFC 0150 G3 |
12
+ | **advertised as** | not applicable |
13
+
14
+ [`registry.json`](./registry.json) lists providers known to expose a natural business-identity key. It informs the Layer-2 idempotency requirement in [`security-defaults.md`](../../core/security-defaults.md). Hosts report the chosen strategy through `GET /runs/{runId}/effects` and the `keying` field of `effect-ledger-projection.schema.json`.
13
15
 
14
- [`registry.json`](./registry.json) lists providers known to expose a natural
15
- business-identity key. It informs the Layer-2 idempotency requirement in
16
- [`security-defaults.md`](../../core/security-defaults.md); it does not add a
17
- discovery family. Hosts report the chosen strategy through
18
- `GET /runs/{runId}/effects` and the `keying` field of
19
- `effect-ledger-projection.schema.json`.
16
+ *Sources: RFC 0150, RFC 0173.*
@@ -1,33 +1,44 @@
1
1
  # `restTransport` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `restTransport` names conditional GET and response compression on run reads. The run-snapshot rules are in [`runs.md`](../../core/runs.md) §"Caching and encoding". This page defines the claim and what advertising it adds to those rules.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
8
- | **witness:** | `claims-check` |
9
+ | **witness:** | `witnessable-gated` |
9
10
  | **technical:** | `experimental` |
10
- | **adoption:** | `none` |
11
+ | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `restTransport` |
12
- | **advertised as** | `extensions.<org>.restTransport` |
13
- | **owning RFC** | RFC 0115 |
13
+ | **advertised as** | `extensions.<org>.rest-transport` |
14
14
  | **declared facets** | `conditionalRunGet`, `contentEncodings` |
15
15
 
16
- ## Contract boundary
16
+ ## The claim
17
+
18
+ A host MAY advertise `restTransport` as `extensions["<org>.rest-transport"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record's two facets are:
19
+
20
+ | Facet | Type | Meaning |
21
+ | --- | --- | --- |
22
+ | `conditionalRunGet` | boolean | `true` claims a validator on every run-snapshot read |
23
+ | `contentEncodings` | array of `gzip`, `br`, `zstd` | the codings the host produces for a run-snapshot read |
24
+
25
+ Other members of the record are the organization's own.
26
+
27
+ ## What the claim adds
17
28
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `restTransport` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
29
+ A host whose record sets `conditionalRunGet: true` MUST carry, on every `200` of `GET /runs/{runId}`, the strong `ETag` that runs.md §"Caching and encoding" makes a SHOULD. The stability and `304` rules there then always apply.
23
30
 
24
- The v1 description,
25
- [`spec/v1/capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/capabilities.md)
26
- (`restTransport`), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
31
+ For each coding listed in `contentEncodings`, a request that names only that coding in `Accept-Encoding` MUST receive it, subject to the rules in runs.md §"Caching and encoding".
32
+
33
+ A client MUST NOT infer anything else from the record.
29
34
 
30
35
  ## Conformance
31
36
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
37
+ `conformance/src/scenarios/v2-ext-rest-transport.test.ts` (major 2) records the witness under `openwop.family.restTransport`:
38
+
39
+ - **Conditional GET:** runs the `conformance-approval` fixture to `waiting-approval`. It checks for a strong `ETag`, a `304` with no body on a matching `If-None-Match`, and a changed `ETag` once the run completes.
40
+ - **Codings:** for each advertised coding, the decoded body is byte-identical to the identity body.
41
+
42
+ A host without the claim records `inapplicable`. A host that makes the claim but lacks the fixture records `blocked`.
43
+
44
+ *Sources: RFC 0115, RFC 0220.*
@@ -1,18 +1,16 @@
1
1
  # Sandbox runtime notes
2
2
 
3
- > **Status: Draft · non-normative note.** This is not a declared extension
4
- > family and is outside this rule.
3
+ > **Status: Note.**
4
+
5
+ A non-normative note, not a declared family.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
8
9
  | **witness:** | `unwitnessable` |
9
10
  | **technical:** | `experimental` |
10
11
  | **adoption:** | `none` |
11
- | **advertised as** | not advertisable (notes, not a surface) |
12
- | **owning RFC** | RFC 0173 §D; RFC 0035 (superseded) |
12
+ | **advertised as** | not advertisable |
13
+
14
+ `node:vm` is not an isolation model; its demonstrator is implementation history only. The v2 contract is in [`security-defaults.md`](../../core/security-defaults.md): `sandbox.isolationModel` is one of `wasm`, `process`, `container`, or `vm`, and pack execution is bound to the advertised isolation mode.
13
15
 
14
- RFC 0035's `node:vm` demonstrator is retained only as implementation history;
15
- `node:vm` is not an isolation model. The v2 contract is in
16
- [`security-defaults.md`](../../core/security-defaults.md):
17
- `sandbox.isolationModel` is one of `wasm`, `process`, `container`, or `vm`, and
18
- pack execution is bound to the advertised isolation mode.
16
+ *Sources: RFC 0035, RFC 0173.*
@@ -1,7 +1,8 @@
1
1
  # `webResearch` extension
2
2
 
3
- > **Status: Draft · v2 extension.** Discovery-only reservation; no portable
4
- > operations or payload contract is defined in the current v2 corpus.
3
+ > **Status: Draft.**
4
+
5
+ `webResearch` names search, fetch and research orchestration through the host's search adapter. It is a discovery-only reservation: v2 defines no portable operations or payload contract for it.
5
6
 
6
7
  | Field | Value |
7
8
  | --- | --- |
@@ -9,25 +10,24 @@
9
10
  | **technical:** | `experimental` |
10
11
  | **adoption:** | `single-witness` |
11
12
  | **peer-dependency id** | `webResearch` |
12
- | **advertised as** | `extensions.<org>.webResearch` |
13
- | **owning RFC** | RFC 0144 |
13
+ | **advertised as** | `extensions.<org>.web-research` |
14
14
  | **declared facets** | none defined |
15
15
 
16
16
  ## Contract boundary
17
17
 
18
- A host MAY advertise this identifier under its registered organization namespace.
19
- The extension record is organization-defined, so clients MUST NOT infer portable
20
- operations, payloads, or authorization semantics from its presence. A pack may
21
- name `webResearch` as a dependency only when the host and pack share
22
- an out-of-band definition of that dependency.
18
+ A host MAY advertise `webResearch` as `extensions["<org>.web-research"]`, where `<org>` is its registered organization ([capabilities.md §3.2](../../core/capabilities.md)). The record is organization-defined, so:
23
19
 
24
- The v1 description,
25
- [`spec/v1/host-capabilities.md`](https://github.com/openwop/openwop/blob/main/spec/v1/host-capabilities.md#hostwebresearch)
26
- (§host.webResearch), is useful for migration but is not a
27
- standalone v2 interoperability contract. A future revision can replace this
28
- boundary with normative behavior, schemas, and a behavioral witness.
20
+ - a client MUST NOT infer portable operations, payloads, or authorization semantics from its presence;
21
+ - a pack may name `webResearch` as a dependency only when the host and pack share an out-of-band definition of it.
29
22
 
30
23
  ## Conformance
31
24
 
32
- The current `claims-check` witness validates only that the discovery claim is
33
- well formed. It does not demonstrate compatible runtime behavior.
25
+ The `claims-check` witness checks only that the discovery claim is well formed, not runtime behavior. `conformance/src/scenarios/v2-ext-family-claims.test.ts` records it under `openwop.family.webResearch`:
26
+
27
+ - the key `<org>.web-research` matches `extensionsKeyPattern`, and `<org>` is registered and not reserved;
28
+ - the record is a JSON object;
29
+ - `webResearch` is not also a member of the discovery root.
30
+
31
+ A host that does not advertise the family records `inapplicable`. A `Stable` label on this page therefore means a host at evidence tier 2 or better advertises the reservation correctly. It does not mean two hosts interoperate on it ([`../README.md`](../README.md)).
32
+
33
+ *Sources: RFC 0144.*
@@ -4,6 +4,7 @@
4
4
  "profiles": [
5
5
  {
6
6
  "id": "openwop-discovery-core",
7
+ "summary": "The host publishes a valid v2 discovery document and negotiates the protocol version; it makes no claim about running workflows.",
7
8
  "predicate": {
8
9
  "families": [],
9
10
  "metadata": [
@@ -21,6 +22,7 @@
21
22
  },
22
23
  {
23
24
  "id": "openwop-core-standard",
25
+ "summary": "The host runs workflows to the executable floor: interrupts, replay, webhooks, idempotency and the event log. This is what an unqualified \"OpenWOP conformant\" claim means.",
24
26
  "predicate": {
25
27
  "families": [
26
28
  "interrupt",
@@ -43,13 +45,15 @@
43
45
  "v2-run-bulk-cancel",
44
46
  "v2-run-pause-resume",
45
47
  "v2-run-options-limits",
46
- "v2-sse-last-event-id"
48
+ "v2-sse-last-event-id",
49
+ "v2-sse-last-event-id-cursor"
47
50
  ],
48
51
  "requirementIds": [],
49
- "note": "rc.59: five unaided run-surface witnesses joined the floor — v2-run-cancel (runs.md §Cancel: 409 run_terminal on a terminal run), v2-run-bulk-cancel (§Cancel: per-entry envelopes, id_tenant_mismatch / not_found, details.maxRunIds), v2-run-pause-resume (§Pause and resume: 409 run_terminal / run_state_conflict, the literal drainPolicy echo, the immediate cut), v2-run-options-limits (capabilities.md limits metadata honoured on create), v2-sse-last-event-id (events.md §SSE frames: Last-Event-ID resumes at the next sequence, never re-emits the resumption point). cancelRun, bulkCancelRuns and pauseRun are core operations by the runs.md surface table (only ancestry, annotations and eval-summary are 404-when-unadvertised), so a host that omits one is blocked, not inapplicable, and the floor refuses it — the prose's outcome. Their optional legs (values mode, the conformance-delay / conformance-cancellable fixtures) record inapplicable with the reason and the file row stays a witnessed pass. Measured before the change: the reference host passes all five (rc.58, 179 / 0 / 0 / 42); neither production host satisfies this predicate, so no existing claim moves. seeded from spec/v1/core-standard-manifest.json at P3-B; floor minted rc.45, one or more unaided witnesses per predicate family: interrupt (token scheme), replay (the effect-seam manifest — its seam-driven no-re-fire leg lives in v2-effect-seam-no-refire on the seams floor), webhooks (durable delivery), idempotency (Layer-1 key grammar), eventLog (era key, era stamp, closed event type, poll cursor). Deliberately absent: v2-pinned-run-disposition (seam-gated and opt-in), v2-v1-signed-webhook-accepted (a coexistence scenario, driven through the seam; the cut gate is its home), v2-effect-identity-business-key (retry leg seam-driven), v2-approver-enforced (conditional on the refKinds facet)."
52
+ "note": "2.42.7: v2-sse-last-event-id-cursor joined the floor (events.md §SSE frames, RFC 0213 §A: Last-Event-ID is an exclusive cursor, a well-formed id past the log is not refused, and the header is read only after authorization). It was held off the floor until the three bundle hosts were measured. Measured on committed bundles, it is executed-pass on the v2 reference host (2.42.2), MyndHyve (2.42.0) and openwop-app (2.42.2 side revision); the first two carry partial-witness only for the SHOULD leg (a malformed id accepted, recorded not failed), so no existing claim moves. rc.59: five unaided run-surface witnesses joined the floor — v2-run-cancel (runs.md §Cancel: 409 run_terminal on a terminal run), v2-run-bulk-cancel (§Cancel: per-entry envelopes, id_tenant_mismatch / not_found, details.maxRunIds), v2-run-pause-resume (§Pause and resume: 409 run_terminal / run_state_conflict, the literal drainPolicy echo, the immediate cut), v2-run-options-limits (capabilities.md limits metadata honoured on create), v2-sse-last-event-id (events.md §SSE frames: Last-Event-ID resumes at the next sequence, never re-emits the resumption point). cancelRun, bulkCancelRuns and pauseRun are core operations by the runs.md surface table (only ancestry, annotations and eval-summary are 404-when-unadvertised), so a host that omits one is blocked, not inapplicable, and the floor refuses it — the prose's outcome. Their optional legs (values mode, the conformance-delay / conformance-cancellable fixtures) record inapplicable with the reason and the file row stays a witnessed pass. Measured before the change: the reference host passes all five (rc.58, 179 / 0 / 0 / 42); neither production host satisfies this predicate, so no existing claim moves. seeded from spec/v1/core-standard-manifest.json at P3-B; floor minted rc.45, one or more unaided witnesses per predicate family: interrupt (token scheme), replay (the effect-seam manifest — its seam-driven no-re-fire leg lives in v2-effect-seam-no-refire on the seams floor), webhooks (durable delivery), idempotency (Layer-1 key grammar), eventLog (era key, era stamp, closed event type, poll cursor). Deliberately absent: v2-pinned-run-disposition (seam-gated and opt-in), v2-v1-signed-webhook-accepted (a coexistence scenario, driven through the seam; the cut gate is its home), v2-effect-identity-business-key (retry leg seam-driven), v2-approver-enforced (conditional on the refKinds facet)."
50
53
  },
51
54
  {
52
55
  "id": "openwop-conformance-seams-v2",
56
+ "summary": "The host mounts the conformance test seams under /conformance/seams/ so the suite can drive seam-based scenarios; it is a testing surface, not a production feature.",
53
57
  "predicate": {
54
58
  "families": [],
55
59
  "metadata": [
@@ -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.42.5",
4
- "corpusTag": "v2.42.5",
3
+ "version": "2.42.7",
4
+ "corpusTag": "v2.42.7",
5
5
  "updated": "2026-09-27"
6
6
  }