@openwop/openwop-conformance 1.72.2 → 1.98.0
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/CHANGELOG.md +36 -0
- package/README.md +2 -2
- package/api/asyncapi.yaml +58 -0
- package/api/openapi.yaml +4 -1
- package/dist/cli.js +107 -1
- package/dist/lib/profiles.js +70 -4
- package/package.json +2 -1
- package/schemas/CORPUS-STAMP.json +2 -2
- package/schemas/README.md +2 -0
- package/schemas/capabilities.schema.json +2054 -572
- package/schemas/certification-bundle-v2.schema.json +108 -0
- package/schemas/run-event-payloads.schema.json +3411 -857
- package/schemas/run-event.schema.json +31 -9
- package/schemas/workflow-definition.schema.json +492 -130
- package/schemas/workload-identity.schema.json +73 -0
- package/src/cli.ts +119 -1
- package/src/lib/a2a-fake-peer.ts +20 -0
- package/src/lib/behavior-gate.ts +42 -7
- package/src/lib/llm-cache-key-recipe.ts +51 -0
- package/src/lib/mcp-fake-server.ts +20 -0
- package/src/lib/profiles.ts +95 -4
- package/src/lib/requirement-ledger.ts +138 -0
- package/src/lib/requirement-registry.ts +62 -0
- package/src/scenarios/a2a-version-negotiation.test.ts +159 -0
- package/src/scenarios/capability-example-root-layout.test.ts +113 -0
- package/src/scenarios/certification-bundle-v2.test.ts +157 -0
- package/src/scenarios/certification-floor-enforcement.test.ts +115 -0
- package/src/scenarios/compensation-behavior.test.ts +164 -0
- package/src/scenarios/compensation-profile.test.ts +175 -0
- package/src/scenarios/contract-provenance.test.ts +209 -0
- package/src/scenarios/core-manifest-and-extension-registry.test.ts +198 -0
- package/src/scenarios/discovery-canonical-family-no-shadow.test.ts +219 -0
- package/src/scenarios/effect-identity-composition.test.ts +129 -0
- package/src/scenarios/effect-identity-cross-scope.test.ts +82 -0
- package/src/scenarios/mcp-version-negotiation.test.ts +159 -0
- package/src/scenarios/multi-region-effect-vocabulary.test.ts +175 -0
- package/src/scenarios/multi-region-idempotency.test.ts +17 -7
- package/src/scenarios/openapi-resolved-paths.test.ts +127 -0
- package/src/scenarios/protocol-version-grammar.test.ts +119 -0
- package/src/scenarios/requirement-ledger.test.ts +162 -0
- package/src/scenarios/rfc-0147-self-audit.test.ts +104 -0
- package/src/scenarios/rfc-lifecycle-coherence.test.ts +137 -0
- package/src/scenarios/semantic-digest-v2.test.ts +128 -0
- package/src/scenarios/semantic-digest-vectors.test.ts +140 -0
- package/src/scenarios/spec-corpus-validity.test.ts +22 -8
- package/src/scenarios/strict-behavior-gate.test.ts +120 -0
- package/src/scenarios/versioned-composition-profiles.test.ts +183 -0
- package/src/scenarios/workload-identity-behavior.test.ts +188 -0
- package/src/scenarios/workload-identity-profile.test.ts +175 -0
- package/vectors/semantic-request-digest-v2.json +236 -0
|
@@ -4,7 +4,14 @@
|
|
|
4
4
|
"title": "RunEventDoc",
|
|
5
5
|
"description": "Persisted event document in the run's append-only event log. Source of truth for run state via projection fold. Canonical OpenWOP v1 event envelope.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": [
|
|
7
|
+
"required": [
|
|
8
|
+
"eventId",
|
|
9
|
+
"runId",
|
|
10
|
+
"type",
|
|
11
|
+
"payload",
|
|
12
|
+
"timestamp",
|
|
13
|
+
"sequence"
|
|
14
|
+
],
|
|
8
15
|
"properties": {
|
|
9
16
|
"eventId": {
|
|
10
17
|
"type": "string",
|
|
@@ -25,19 +32,28 @@
|
|
|
25
32
|
"maxLength": 128
|
|
26
33
|
},
|
|
27
34
|
"type": {
|
|
28
|
-
"description": "Event-type discriminator. RFC 0094
|
|
35
|
+
"description": "Event-type discriminator. RFC 0094 \u00a7C: either a protocol-owned type from the authoritative `RunEventType` catalog, or a correctly-prefixed vendor-extension event per `host-extensions.md` \u00a7\"Vendor-prefixed namespaces\" (dotted name whose first segment is the vendor's short identifier or reverse-DNS label \u2014 e.g. `acme.canvas.published` \u2014 and is NOT a protocol-owned/registry-reserved prefix). Aligns the schema with `COMPATIBILITY.md` (\"Clients MUST ignore unknown event types\") and `version-negotiation.md` (readers ignore unknown).",
|
|
29
36
|
"anyOf": [
|
|
30
|
-
{
|
|
37
|
+
{
|
|
38
|
+
"$ref": "#/$defs/RunEventType"
|
|
39
|
+
},
|
|
31
40
|
{
|
|
32
41
|
"type": "string",
|
|
33
42
|
"pattern": "^(?!(?:openwop|core|community|vendor|private|local)\\.)[a-z][a-zA-Z0-9_-]*(\\.[a-zA-Z0-9_-]+)+$",
|
|
34
|
-
"description": "Vendor-extension event type: two or more dot-separated segments; the leading segment is the vendor prefix and MUST NOT be one of the protocol-owned / registry-reserved prefixes (`openwop.*`, `core.*`, `community.*`, `vendor.*`, `private.*`, `local.*`) per `host-extensions.md`
|
|
43
|
+
"description": "Vendor-extension event type: two or more dot-separated segments; the leading segment is the vendor prefix and MUST NOT be one of the protocol-owned / registry-reserved prefixes (`openwop.*`, `core.*`, `community.*`, `vendor.*`, `private.*`, `local.*`) per `host-extensions.md` \u00a7\"Canonical prefixes\"."
|
|
35
44
|
}
|
|
36
45
|
]
|
|
37
46
|
},
|
|
38
47
|
"payload": {
|
|
39
48
|
"description": "Event-type-specific payload. Servers MAY validate against per-type schemas; this top-level schema accepts any JSON value.",
|
|
40
|
-
"type": [
|
|
49
|
+
"type": [
|
|
50
|
+
"object",
|
|
51
|
+
"array",
|
|
52
|
+
"string",
|
|
53
|
+
"number",
|
|
54
|
+
"boolean",
|
|
55
|
+
"null"
|
|
56
|
+
]
|
|
41
57
|
},
|
|
42
58
|
"timestamp": {
|
|
43
59
|
"type": "string",
|
|
@@ -52,7 +68,7 @@
|
|
|
52
68
|
"schemaVersion": {
|
|
53
69
|
"type": "integer",
|
|
54
70
|
"minimum": 0,
|
|
55
|
-
"description": "Per-event schema version. Bumped when an individual event type's payload contract changes. Distinct from per-run eventLogSchemaVersion (which describes the subcollection contract). Reader behavior is tolerant
|
|
71
|
+
"description": "Per-event schema version. Bumped when an individual event type's payload contract changes. Distinct from per-run eventLogSchemaVersion (which describes the subcollection contract). Reader behavior is tolerant \u2014 unknown future versions fold best-effort."
|
|
56
72
|
},
|
|
57
73
|
"engineVersion": {
|
|
58
74
|
"type": "string",
|
|
@@ -65,12 +81,12 @@
|
|
|
65
81
|
"maxLength": 128
|
|
66
82
|
}
|
|
67
83
|
},
|
|
68
|
-
"$comment": "RFC 0094
|
|
84
|
+
"$comment": "RFC 0094 \u00a7G + COMPATIBILITY.md \u00a7\"Schema closure\": RunEventDoc is a SERVER-EMITTED shape, so it is open (`additionalProperties: true`) \u2014 v1.x hosts may add optional fields additively without breaking schema-validating clients. Client-submitted shapes stay closed at their outermost composition.",
|
|
69
85
|
"additionalProperties": true,
|
|
70
86
|
"$defs": {
|
|
71
87
|
"RunEventType": {
|
|
72
88
|
"type": "string",
|
|
73
|
-
"description": "Discriminator for event payload shape. Dotted naming convention. New variants extend the union
|
|
89
|
+
"description": "Discriminator for event payload shape. Dotted naming convention. New variants extend the union \u2014 readers MUST NOT throw on unknown types (forward-compat: fold best-effort, ignore unknowns). RFC 0151 \u00a7D adds the six content-free `compensation.*` events. They are added to this CLOSED enum because without them a conforming host cannot emit them at all: the RFC named the events, the enum did not contain them, and any host following \u00a7D would have produced run events that fail schema validation. Payloads carry opaque node/effect IDs, attempt, ordering model, and closed reason codes \u2014 never provider bodies or credentials (\u00a7D/\u00a7G).",
|
|
74
90
|
"enum": [
|
|
75
91
|
"run.started",
|
|
76
92
|
"run.completed",
|
|
@@ -182,7 +198,13 @@
|
|
|
182
198
|
"voice.turn_commit",
|
|
183
199
|
"voice.synthesis_chunk",
|
|
184
200
|
"voice.barge_in",
|
|
185
|
-
"voice.cancelled"
|
|
201
|
+
"voice.cancelled",
|
|
202
|
+
"compensation.requested",
|
|
203
|
+
"compensation.started",
|
|
204
|
+
"compensation.completed",
|
|
205
|
+
"compensation.failed",
|
|
206
|
+
"compensation.paused",
|
|
207
|
+
"compensation.manual_intervention_required"
|
|
186
208
|
]
|
|
187
209
|
}
|
|
188
210
|
}
|