@openwop/spec-artifacts 2.42.6 → 2.42.8
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 +70 -67
- package/api/seams-v2.yaml +238 -322
- package/api/v2/asyncapi.yaml +83 -113
- package/api/v2/openapi.yaml +408 -724
- package/package.json +1 -1
- package/schemas/audit-verify-result.schema.json +2 -2
- package/schemas/v2/audit-verify-result.schema.json +2 -2
- package/schemas/v2/capabilities.schema.json +4 -7
- package/schemas/v2/error-envelope.schema.json +144 -69
- package/spec/v1/alias-detectors.json +6 -0
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/deprecations.json +22 -0
- package/spec/v1/gaps.json +188 -1
- package/spec/v1/migrations.json +18 -0
- package/spec/v2/README.md +35 -37
- package/spec/v2/core/capabilities.md +186 -119
- package/spec/v2/core/conformance.md +78 -27
- package/spec/v2/core/connection-packs.md +8 -3
- package/spec/v2/core/conversation.md +10 -4
- package/spec/v2/core/errors.md +30 -9
- package/spec/v2/core/events.md +116 -80
- package/spec/v2/core/form-content-packs.md +11 -13
- package/spec/v2/core/headers.md +23 -14
- package/spec/v2/core/host-services.md +22 -5
- package/spec/v2/core/i18n.md +64 -0
- package/spec/v2/core/idempotency.md +48 -36
- package/spec/v2/core/identity.md +110 -42
- package/spec/v2/core/interop.md +82 -21
- package/spec/v2/core/interrupt.md +79 -40
- package/spec/v2/core/node-pack-runtimes.md +18 -4
- package/spec/v2/core/oauth.md +40 -6
- package/spec/v2/core/overview.md +61 -33
- package/spec/v2/core/packs.md +53 -28
- package/spec/v2/core/persistence.md +61 -80
- package/spec/v2/core/portability.md +44 -0
- package/spec/v2/core/replay.md +56 -42
- package/spec/v2/core/runs.md +198 -60
- package/spec/v2/core/security-defaults.md +57 -33
- package/spec/v2/core/tool-catalog.md +29 -6
- package/spec/v2/core/versioning.md +115 -50
- package/spec/v2/core/webhooks.md +61 -20
- package/spec/v2/core/workflow-chain-packs.md +16 -14
- package/spec/v2/corrections.json +17 -1
- package/spec/v2/corrections.schema.json +1 -1
- package/spec/v2/declaration.json +26 -9
- package/spec/v2/declaration.schema.json +10 -0
- package/spec/v2/errors.json +121 -4
- package/spec/v2/errors.schema.json +38 -0
- package/spec/v2/ext/README.md +36 -23
- package/spec/v2/ext/a2uiSurface/README.md +75 -89
- package/spec/v2/ext/brand/README.md +15 -15
- package/spec/v2/ext/canvas/README.md +15 -15
- package/spec/v2/ext/chat/README.md +15 -15
- package/spec/v2/ext/coordination/README.md +15 -15
- package/spec/v2/ext/dataIntegration/README.md +17 -20
- package/spec/v2/ext/entities/README.md +15 -15
- package/spec/v2/ext/grpc-transport/README.md +6 -8
- package/spec/v2/ext/kanban/README.md +15 -15
- package/spec/v2/ext/knowledge/README.md +15 -15
- package/spec/v2/ext/launchStudio/README.md +16 -16
- package/spec/v2/ext/messaging/README.md +15 -15
- package/spec/v2/ext/portability/README.md +3 -17
- package/spec/v2/ext/provider-idempotency/README.md +7 -10
- package/spec/v2/ext/restTransport/README.md +30 -19
- package/spec/v2/ext/sandbox-runtime-notes/README.md +7 -9
- package/spec/v2/ext/webResearch/README.md +16 -16
- package/spec/v2/profiles.json +6 -2
- package/spec/v2/release.json +2 -2
- package/spec/v2/surface-baseline.json +544 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# `entities` extension
|
|
2
2
|
|
|
3
|
-
> **Status: Draft
|
|
4
|
-
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
33
|
-
|
|
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:
|
|
4
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
4
|
-
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
33
|
-
|
|
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
|
|
4
|
-
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
33
|
-
|
|
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
|
|
4
|
-
|
|
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>.
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
33
|
-
|
|
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
|
|
4
|
-
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
33
|
-
|
|
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:
|
|
4
|
-
> and is outside this rule.
|
|
3
|
+
> **Status: Retired.**
|
|
5
4
|
|
|
6
|
-
|
|
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: [portability.md](../../core/portability.md).
|
|
13
6
|
|
|
14
|
-
|
|
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:
|
|
4
|
-
|
|
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
|
|
12
|
-
|
|
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
|
-
|
|
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
|
|
4
|
-
|
|
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:** | `
|
|
9
|
+
| **witness:** | `witnessable-gated` |
|
|
9
10
|
| **technical:** | `experimental` |
|
|
10
|
-
| **adoption:** | `
|
|
11
|
+
| **adoption:** | `single-witness` |
|
|
11
12
|
| **peer-dependency id** | `restTransport` |
|
|
12
|
-
| **advertised as** | `extensions.<org>.
|
|
13
|
-
| **owning RFC** | RFC 0115 |
|
|
13
|
+
| **advertised as** | `extensions.<org>.rest-transport` |
|
|
14
14
|
| **declared facets** | `conditionalRunGet`, `contentEncodings` |
|
|
15
15
|
|
|
16
|
-
##
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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:
|
|
4
|
-
|
|
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
|
|
12
|
-
|
|
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
|
|
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
|
|
4
|
-
|
|
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>.
|
|
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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
|
33
|
-
|
|
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.*
|
package/spec/v2/profiles.json
CHANGED
|
@@ -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": [
|
package/spec/v2/release.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "RFC 0172 §D.1 — the one release identity the v2 artifacts derive from. `version` is the next corpus tag `v<version>` (the publish workflow's coordinated-release tag pattern `v*`; RFC 0172's `openwop/v2.<minor>.<patch>` spelling is amended to this at its flip). api/v2/*.yaml info.version, the suite's 2.x version and @openwop/spec-artifacts read it. Bumped by the release PR that cuts the tag, never by hand elsewhere.",
|
|
3
|
-
"version": "2.42.
|
|
4
|
-
"corpusTag": "v2.42.
|
|
3
|
+
"version": "2.42.8",
|
|
4
|
+
"corpusTag": "v2.42.8",
|
|
5
5
|
"updated": "2026-09-27"
|
|
6
6
|
}
|