@openwop/openwop-conformance 2.9.1 → 2.10.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
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# `@openwop/openwop-conformance` Changelog
|
|
2
2
|
|
|
3
|
+
## [2.10.0] — 2026-09-18 — packs resolves; two seam facets deprecated
|
|
4
|
+
|
|
5
|
+
**Why a minor.** No conformance code changes. `spec/v2/core/packs.md`,
|
|
6
|
+
`spec/v2/declaration.json`, `spec/v1/deprecations.json` and the generated
|
|
7
|
+
`api/v2/openapi.yaml` are published artifacts: `packs` gains its normative home,
|
|
8
|
+
`packs.testMode` and `observability.testSeams` are deprecated at 3.0 (NOT
|
|
9
|
+
removed — live v2 discovery documents advertise them), and an orphaned
|
|
10
|
+
`packs-test` tag is pruned.
|
|
11
|
+
|
|
12
|
+
## [2.9.2] — 2026-09-18 — mcp-2026-07-28-discover matches its own fake server
|
|
13
|
+
|
|
14
|
+
**Why a patch.** One assertion in `mcp-2026-07-28-discover.test.ts` listed two
|
|
15
|
+
tools where `McpFakeServer` has served three since 2.4.0. No host-visible
|
|
16
|
+
contract changes; the scenario now passes unquarantined (9/9 executed-pass).
|
|
17
|
+
|
|
3
18
|
## [2.9.1] — 2026-09-18 — RFC 0189 gap register
|
|
4
19
|
|
|
5
20
|
**Why a patch.** No conformance code changes; `spec/v1/gaps.json` is a published
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
# --legacy-peer-deps is REQUIRED, not optional: the exact peer pin is what npm's
|
|
12
12
|
# default resolver refuses. npm 10.9 fails outright with
|
|
13
13
|
# "Cannot read properties of null (reading 'edgesOut')" — use npm >= 11.
|
|
14
|
-
npm install --legacy-peer-deps @openwop/openwop-conformance@2.
|
|
14
|
+
npm install --legacy-peer-deps @openwop/openwop-conformance@2.10.0 @openwop/spec-artifacts@2.10.0
|
|
15
15
|
# or run without install:
|
|
16
16
|
npx @openwop/openwop-conformance --base-url https://api.example.com --api-key hk_test_...
|
|
17
17
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/openwop-conformance",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "Production-ready black-box conformance suite for OpenWOP v1.0 compliant servers.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
"@openwop/spec-artifacts": "file:../spec-artifacts"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@openwop/spec-artifacts": "2.
|
|
59
|
+
"@openwop/spec-artifacts": "2.10.0"
|
|
60
60
|
}
|
|
61
61
|
}
|
package/requirements.json
CHANGED
|
@@ -15622,7 +15622,7 @@
|
|
|
15622
15622
|
{
|
|
15623
15623
|
"id": "openwop.it.mcp-2026-07-28-discover.mrtr-needs-input-answers-input-required-elicitation-opaque-requeststate-and-comp",
|
|
15624
15624
|
"file": "mcp-2026-07-28-discover.test.ts",
|
|
15625
|
-
"line":
|
|
15625
|
+
"line": 130,
|
|
15626
15626
|
"title": "MRTR: needs_input answers input_required (elicitation + opaque requestState) and completes on the retry; missing capability ⇒ -32021",
|
|
15627
15627
|
"explicitId": "openwop.it.mcp-2026-07-28-discover.mrtr-needs-input-answers-input-required-elicitation-opaque-requeststate-and-comp",
|
|
15628
15628
|
"citations": [
|
|
@@ -15635,7 +15635,7 @@
|
|
|
15635
15635
|
{
|
|
15636
15636
|
"id": "openwop.it.mcp-2026-07-28-discover.server-discover-reports-supportedversions-equal-to-capabilities-mcp-protocolvers",
|
|
15637
15637
|
"file": "mcp-2026-07-28-discover.test.ts",
|
|
15638
|
-
"line":
|
|
15638
|
+
"line": 186,
|
|
15639
15639
|
"title": "server/discover reports supportedVersions equal to capabilities.mcp.protocolVersions, with resultType + cache hints",
|
|
15640
15640
|
"explicitId": "openwop.it.mcp-2026-07-28-discover.server-discover-reports-supportedversions-equal-to-capabilities-mcp-protocolvers",
|
|
15641
15641
|
"citations": [
|
|
@@ -15656,7 +15656,7 @@
|
|
|
15656
15656
|
{
|
|
15657
15657
|
"id": "openwop.it.mcp-2026-07-28-discover.a-header-body-revision-mismatch-is-refused-400-32020-an-unsupported-revision-400",
|
|
15658
15658
|
"file": "mcp-2026-07-28-discover.test.ts",
|
|
15659
|
-
"line":
|
|
15659
|
+
"line": 198,
|
|
15660
15660
|
"title": "a header/body revision mismatch is refused 400 + -32020; an unsupported revision 400 + -32022",
|
|
15661
15661
|
"explicitId": "openwop.it.mcp-2026-07-28-discover.a-header-body-revision-mismatch-is-refused-400-32020-an-unsupported-revision-400",
|
|
15662
15662
|
"citations": [
|
|
@@ -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.
|
|
5
|
-
"corpusTag": "v2.
|
|
4
|
+
"version": "2.10.0",
|
|
5
|
+
"corpusTag": "v2.10.0",
|
|
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": "
|
|
13
|
-
"api/v2/asyncapi.yaml": "
|
|
14
|
-
"api/v2/openapi.yaml": "
|
|
12
|
+
"api/seams-v2.yaml": "e1f0047f910a03c7d92d44bb3f34447dd1910aef357e926b4289b6c5f4df9e42",
|
|
13
|
+
"api/v2/asyncapi.yaml": "531be1b674d73b2530b3dff9ffe4530b80d77ac6afbdada7fa924be0d27b13a5",
|
|
14
|
+
"api/v2/openapi.yaml": "bd2e7cdf05ac56dcffa6bd3b82364fcccbf470c5ca99fe8454f6ea65bf958e97",
|
|
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": "
|
|
118
|
+
"schemas/v2/capabilities.schema.json": "ae1ece0c55cf467f11fe54d1374b42a249db57d8d69e45afc6f8d40e3712ca90",
|
|
119
119
|
"schemas/v2/certification-bundle.schema.json": "0bcf8f297266505ca39d30eea8100e3c0fb048f2651717fd746da8129fcb7920",
|
|
120
120
|
"schemas/v2/channel-presence-payload.schema.json": "1c20ad810cb311d47aa0b95d928490826b2468fd161f884cd29e867053e6782f",
|
|
121
121
|
"schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
|
|
@@ -199,10 +199,10 @@
|
|
|
199
199
|
"schemas/workload-identity.schema.json": "64ed93e12cc9f0657e56ff9b8f045e5d68d397df5276d103c07f42c7f34f0579",
|
|
200
200
|
"schemas/workspace-file-create.schema.json": "70a23b92c2958c0165d7d29aea9020a045dc7816af82c80c5f50d0aac19c4856",
|
|
201
201
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
202
|
-
"spec/v1/alias-detectors.json": "
|
|
202
|
+
"spec/v1/alias-detectors.json": "40069d5976eeb6ba1384a648e57e5cfd673db3fce36175115fb8293bee9664d4",
|
|
203
203
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
204
|
-
"spec/v1/core-standard-manifest.json": "
|
|
205
|
-
"spec/v1/deprecations.json": "
|
|
204
|
+
"spec/v1/core-standard-manifest.json": "eb6258dd220952cc4f310872c3c2cb0138bbe7ec692e292e93b164a3dfbfe9f9",
|
|
205
|
+
"spec/v1/deprecations.json": "307083ce29c23fd406015951f99a30d78d6187ff061d38dc9732f62191b40f3f",
|
|
206
206
|
"spec/v1/deprecations.schema.json": "18c87e78bedc210431f795ae44c5b5d202f2f3317850d5cf86867d4f1fa1cdfb",
|
|
207
207
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
208
208
|
"spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
|
|
@@ -226,7 +226,7 @@
|
|
|
226
226
|
"spec/v2/core/interop.md": "8d8f4b040cb3625044c6aa586c8dcf5e9d15797de3d3b1cea631f44b8924701c",
|
|
227
227
|
"spec/v2/core/interrupt.md": "bdb2879a52a2504d84146e46108c4a4c2dd3a6f27865a295c80375b331cced21",
|
|
228
228
|
"spec/v2/core/overview.md": "7dc00ace32d4e4ce929a383651f0029fc4b7091ec87487b1bf26ead1be209e0e",
|
|
229
|
-
"spec/v2/core/packs.md": "
|
|
229
|
+
"spec/v2/core/packs.md": "6e74aecc613b8f3592df0506fc9dfbddb5e51998c905e772ff7a38573b3ed95b",
|
|
230
230
|
"spec/v2/core/persistence.md": "e9e64d0eb7f9cd6ae71a5973ee539ed30966eca309fad523f05e33adc79f9225",
|
|
231
231
|
"spec/v2/core/replay.md": "13bf1f47573e0688ede28d2b1cc74cefd75e0a5c168ebf5d989f45b2cc2067b7",
|
|
232
232
|
"spec/v2/core/runs.md": "b4c0bb2869077fcbf26e15bc6bbac06819f68b8241944b903a275a37db1c71fa",
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
"spec/v2/core/versioning.md": "27b88cde88f9060567ef7e46f4897b6be8892ade9f4a46c2ab16e314c515eabd",
|
|
235
235
|
"spec/v2/core/webhooks.md": "e08a736fd0bfdc79f5c2309c66f53caf96fac8d9954e0a184c2229de4ce286e9",
|
|
236
236
|
"spec/v2/core/workflow-chain-packs.md": "26bb65721f826285b7d90c3cb62fa7e9fb2414c1bc6e0fd25b33209168c3102e",
|
|
237
|
-
"spec/v2/declaration.json": "
|
|
237
|
+
"spec/v2/declaration.json": "83ba35c0d1d059f420edee62e4c1b96e3d8bd35394106e8a5ae684e502dcd99e",
|
|
238
238
|
"spec/v2/declaration.schema.json": "c86e3083fb9789c1958ecb4576cc6f71aa90e6f339521139238543ed08211dd4",
|
|
239
239
|
"spec/v2/errors.json": "aac91b12f954cc90574d310070ae3c651b131055d4389d2c6155242763765195",
|
|
240
240
|
"spec/v2/event-codemap.json": "37869a03cdfd8758b57e6f350641a6ebbd383231cebda51f5473ad85f94ab74c",
|
|
@@ -264,6 +264,7 @@
|
|
|
264
264
|
"spec/v2/facets/heartbeat.schema.json": "81d7fa1895a8b0241bd07cf00a7e7905bef0fd14eb3427325261c62eee5746a6",
|
|
265
265
|
"spec/v2/facets/interrupt.schema.json": "c76c58c0abd99de619f8c8afad246568f5bc9cce3b7a0d097d16d87eba84be3a",
|
|
266
266
|
"spec/v2/facets/mcp.schema.json": "f56609fe24ba6160ad29ae31aa16043354ff005e5cb6a0f3871c4d226087cc08",
|
|
267
|
+
"spec/v2/facets/packs.schema.json": "fc8307f9230d4c2a780912bc4e506c92cc26b78d3e7fdd63418b3e7df2b365bd",
|
|
267
268
|
"spec/v2/facets/replay.schema.json": "0a5aefb0108c708c6794fadd533cf256709704c4f16dbf44cd63fa8980c78018",
|
|
268
269
|
"spec/v2/facets/runList.schema.json": "6223e1baaebbb9f4faa71bfe968f8d22b4aa88046d0e43e8d5f56409e7f86e90",
|
|
269
270
|
"spec/v2/facets/sandbox.schema.json": "e75f54486d387b2d089791aa93b5093cd1450f1920753a0f97fc23acdfe978ed",
|
|
@@ -273,8 +274,8 @@
|
|
|
273
274
|
"spec/v2/path-manifest.json": "c123c9fd77dc1b3f9c2e9346ace80cdae007e6511138894956abda01e61ec1c6",
|
|
274
275
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
275
276
|
"spec/v2/profiles.json": "0636f19fceae625390003a347e70ef4797d84766b5c24ce8a02cea52aadebca4",
|
|
276
|
-
"spec/v2/release.json": "
|
|
277
|
+
"spec/v2/release.json": "5bf2c0c64c9ccf6e8230d9d5172c55e3457bfca83111a3c0adea4c6cfc15a38e",
|
|
277
278
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624"
|
|
278
279
|
},
|
|
279
|
-
"corpusCommit": "
|
|
280
|
+
"corpusCommit": "267511d1337f9e707ffe46f832ad1a3e15d95f6c"
|
|
280
281
|
}
|
|
@@ -116,7 +116,12 @@ describe('RFC 0153 §B — the suite MCP server speaks 2026-07-28 (dual-era McpF
|
|
|
116
116
|
expect(typeof r.result?.['ttlMs']).toBe('number');
|
|
117
117
|
expect(r.result?.['cacheScope']).toBe('public');
|
|
118
118
|
const names = (r.result?.['tools'] as Array<{ name: string }>).map((t) => t.name);
|
|
119
|
-
|
|
119
|
+
// `needs_input_loop` is the MRTR tool this `it` is named for — it was added to the
|
|
120
|
+
// fake server in 2.4.0 so the mrtr-rounds-ceiling leg could reach a ceiling >= 1,
|
|
121
|
+
// and this assertion was never moved with it. A host that proxies the fake server
|
|
122
|
+
// faithfully returns all three, so the leg red on every certify run while the
|
|
123
|
+
// corpus gate quarantined it locally.
|
|
124
|
+
expect(names).toEqual(['echo', 'needs_input', 'needs_input_loop']);
|
|
120
125
|
// legacy list does NOT carry the current-revision fields
|
|
121
126
|
const legacy = await call(server.endpoint(), 'tools/list', {});
|
|
122
127
|
expect(legacy.result?.['ttlMs']).toBeUndefined();
|